pax_global_header 0000666 0000000 0000000 00000000064 13523273236 0014520 g ustar 00root root 0000000 0000000 52 comment=219844c1b4afc64f898a234b91185425d40b7a25
DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/ 0000775 0000000 0000000 00000000000 13523273236 0020545 5 ustar 00root root 0000000 0000000 DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ 0000775 0000000 0000000 00000000000 13523273236 0023070 5 ustar 00root root 0000000 0000000 DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn/ 0000775 0000000 0000000 00000000000 13523273236 0024040 5 ustar 00root root 0000000 0000000 DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn/DiameterRfRo_PICS.ttcn 0000664 0000000 0000000 00000046067 13523273236 0030110 0 ustar 00root root 0000000 0000000 /**
* @author STF 490
* @version $Id$
* @desc This module provides the PICS used for the DiameterRfRo tests.
* See ETSI TS/103 374-1
*/
module DiameterRfRo_PICS {
group PICS_A2{
/**
* @desc Does CDF act as the IUT?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.2/1
*/
modulepar boolean PICS_RF_CDF_IUT := false;
/**
* @desc Does CTF act as the IUT?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.2/2
*/
modulepar boolean PICS_RF_CTF_IUT := false;
} // End of group PICS_A2
group PICS_A3 {
/**
* @desc Does the IUT support event based charging?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.3/1.1
*/
modulepar boolean PICS_RF_CDF_EVENT_BASED_CHARGING := false;
/**
* @desc Does the IUT support session based charging?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.3/1.2
*/
modulepar boolean PICS_RF_CDF_SESSION_BASED_CHARGING := false;
/**
* @desc Does the IUT support CDF backup available?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.3/2
*/
modulepar boolean PICS_RF_CDF_BACKUP_AVAILABLE := false;
/**
* @desc Does the IUT support request for envelope reporting
* in the Envelope-Report AVP AVP in the
* Multiple-Services-Credit-Control AVP of the CCA message?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.3/3
*/
modulepar boolean PICS_RF_CDF_ENVELOPE_REPORTING := false;
} // End of group PICS_A3
group PICS_A4 {
/**
* @desc Does the IUT support event based charging?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.4/1.1
*/
modulepar boolean PICS_RF_CTF_EVENT_BASED_CHARGING := false;
/**
* @desc Does the IUT support session based charging?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.4/1.2
*/
modulepar boolean PICS_RF_CTF_SESSION_BASED_CHARGING := false;
/**
* @desc Does the IUT support handling of offline charging error cases?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.4/2
*/
modulepar boolean PICS_RF_CTF_OFFLINE_CHARGING_ERROR_CASES := false;
/**
* @desc Does the IUT support handling of offline charging error cases
* where buffering of generated accounting data when the connection
* to the CDF breaks?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.4/2.1
*/
modulepar boolean PICS_RF_CTF_ERROR_CASES_ACR_BUFFERING := false;
/**
* @desc Does the IUT support handling of offline charging error cases
* with retransmission of ACR messages when no ACA is received?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.4/2.2
*/
modulepar boolean PICS_RF_CTF_ERROR_CASES_ACR_RETRANSMISSION := false;
/**
* @desc Does the IUT support handling of envelope reporting request?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.4/3
*/
modulepar boolean PICS_RF_CTF_ENVELOPE_REPORTING := false;
/**
* @desc Does the IUT support connection to a backup CDF?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.4/4 (or A.4/5)
*/
modulepar boolean PICS_RF_CTF_CONNECTION_TO_BACKUP_CDF := false;
} // End of group PICS_A4
group PICS_A5 {
/**
* @desc Does OCF act as the IUT?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.5/1
*/
modulepar boolean PICS_RO_OCF_IUT := false;
/**
* @desc Does CTF act as the IUT?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.5/2
*/
modulepar boolean PICS_RO_CTF_IUT := false;
} // End of group PICS_A5
group PICS_A6 {
/**
* @desc Does OCF support centralized unit determination?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/1.1
*/
modulepar boolean PICS_RO_OCF_CENTRALIZED_UNIT_DETERMINATION := false;
/**
* @desc Does OCF support decentralized unit determination?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/1.2
*/
modulepar boolean PICS_RO_OCF_DECENTRALIZED_UNIT_DETERMINATION := false;
/**
* @desc Does OCF support centralized rating?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/2.1
*/
modulepar boolean PICS_RO_OCF_CENTRALIZED_RATING := false;
/**
* @desc Does OCF support decentralized rating?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/2.2
*/
modulepar boolean PICS_RO_OCF_DECENTRALIZED_RATING := false;
/**
* @desc Does OCF support immediate event charging?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/3.1
*/
modulepar boolean PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING := false;
/**
* @desc Does OCF support event charging with unit reservation?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/3.2
*/
modulepar boolean PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION := false;
/**
* @desc Does OCF support session charging with unit reservation?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/3.3
*/
modulepar boolean PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION := false;
/**
* @desc Does OCF support handling of online charging error cases and scenarios?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/4
*/
modulepar boolean PICS_RO_OCF_ONLINE_CHARGING_ERROR_CASES := false;
/**
* @desc Does OCF support tariff changes during an active user session??
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/5
*/
modulepar boolean PICS_RO_OCF_TARIFF_CHANGES_DURING_ACTIVE_SESSION := false;
/**
* @desc Does OCF support re-authorization?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/6
*/
modulepar boolean PICS_RO_OCF_RE_AUTHORIZATION := false;
/**
* @desc Does OCF support failover?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/7
*/
modulepar boolean PICS_RO_OCF_FAILOVER := false;
/**
* @desc Does OCF support credit pooling?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/8
*/
modulepar boolean PICS_RO_OCF_CREDIT_POOLING := false;
/**
* @desc Does OCF support re-authorization?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/9
*/
modulepar boolean PICS_RO_OCF_RE_AUTHORIZATION_1 := false; // FIXME To be removed in ETSI TS 103 374-1 V1.1.12 (2015-09), duplicated with A.6/6
/**
* @desc Does OCF support specification of an idle timeout in the Quota Holding-Time AVP of the CCA message?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/9.1
*/
modulepar boolean PICS_RO_OCF_RE_AUTHORIZATION_QUOTA_HOLDING_TIME := false;
/**
* @desc Does OCF support instructions to trigger re-authorization in the Trigger AVP in the
* Multiple-Services-Credit-Control AVP of the CCA message?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/9.2
*/
modulepar boolean PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER := false;
/**
* @desc Does OCF support inclusion of threshold based re-authorization triggers?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/10
*/
modulepar boolean PICS_RO_OCF_TRESHOLD_BASED_RE_AUTHORIZATION_TIME_QUOTA_TRESHOLD := false;
/**
* @desc Does OCF support inclusion of the Time-Quota-Threshold AVP in the Multiple-Services-Credit-Control AVP of the CCA message?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/10.1
*/
modulepar boolean PICS_RO_OCF_TRESHOLD_BASED_TIME_QUOTA_TRESHOLD := false;
/**
* @desc Does OCF support inclusion of the Volume-Quota-Threshold AVP in the Multiple-Services-Credit-Control AVP of the CCA message?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/10.2
*/
modulepar boolean PICS_RO_OCF_TRESHOLD_BASED_VOLUME_QUOTA_TRESHOLD := false;
/**
* @desc Does OCF support inclusion of threshold based re-authorization triggers and
* inclusion of the Unit-Quota-Threshold AVP in the Multiple-Services-Credit-Control AVP of the CCA message?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/10.3
*/
modulepar boolean PICS_RO_OCF_TRESHOLD_BASED_RE_AUTHORIZATION_UNIT_QUOTA_TRESHOLD := false;
/**
* @desc Does OCF support indication of the quota consumption time in the Quota-Consumption-Time AVP
* in the Multiple-Services-Credit-Control AVP of the CCA message?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/11
*/
modulepar boolean PICS_RO_OCF_QUOTA_CONSUMPTION_TIME := false;
/**
* @desc Does OCF support procedures for service termination?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/12
*/
modulepar boolean PICS_RO_OCF_SERVICE_TERMINATION := false;
/**
* @desc Does OCF support service termination with a CCA message, if a CCR request is pending?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/12.1
*/
modulepar boolean PICS_RO_OCF_SERVICE_TERMINATION_WITH_CCA := false;
/**
* @desc Does OCF support service termination with an ASR message, if no CCR request is pending?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/12.2
*/
modulepar boolean PICS_RO_OCF_SERVICE_TERMINATION_WITH_ASR := false;
/**
* @desc Does OCF support service termination with a RAR message, if no CCR request is pending?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/12.3
*/
modulepar boolean PICS_RO_OCF_SERVICE_TERMINATION_WITH_RAR := false;
/**
* @desc Does OCF support request for envelope reporting in the Envelope-Report AVP
* in the Multiple-Services-Credit-Control AVP of the CCA message??
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/13
*/
modulepar boolean PICS_RO_OCF_ENVELOPE_REPORTING := false;
/**
* @desc Does OCF support indication of combinational quota in the Time-Quota-Mechanism AVP
* in the Multiple-Services-Credit-Control AVP of the CCA message?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/14
*/
modulepar boolean PICS_RO_OCF_TIME_QUOTA_MECHANISM := false;
/**
* @desc Does OCF support indication of online control of offline charging information
* in the Offline-Charging AVP of the CCA message?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/15
*/
modulepar boolean PICS_RO_OCF_OFFLINE_CHARGING_INFORMATION := false;
/**
* @desc Does OCF support CCFH configured for TERMINATE?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/16.1
*/
modulepar boolean PICS_RO_OCF_CCFH_TERMINATE := false;
/**
* @desc Does OCF support CCFH configured for RETRY_AND_TERMINATE?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/16.2
*/
modulepar boolean PICS_RO_OCF_CCFH_RETRY_AND_TERMINATE := false;
/**
* @desc Does OCF support CCFH configured for CONTINUE?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/16.3
*/
modulepar boolean PICS_RO_OCF_CCFH_CONTINUE := false;
/**
* @desc Does OCF support DDFH configured for TERMINATE_OR_BUFFER?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/16.4
*/
modulepar boolean PICS_RO_OCF_DDFH_TERMINATE_OR_BUFFER := false;
/**
* @desc Does OCF support DDFH configured for CONTINUE?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.6/16.5
*/
modulepar boolean PICS_RO_OCF_DDFH_CONTINUE := false;
} // End of group PICS_A6
group PICS_A7 {
/**
* @desc Does CTF support centralized unit determination?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/1.1
*/
modulepar boolean PICS_RO_CTF_CENTRALIZED_UNIT_DETERMINATION := false;
/**
* @desc Does CTF support decentralized unit determination?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/1.2
*/
modulepar boolean PICS_RO_CTF_DECENTRALIZED_UNIT_DETERMINATION := false;
/**
* @desc Does CTF support centralized rating?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/2.1
*/
modulepar boolean PICS_RO_CTF_CENTRALIZED_RATING := false;
/**
* @desc Does CTF support decentralized rating?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/2.2
*/
modulepar boolean PICS_RO_CTF_DECENTRALIZED_RATING := false;
/**
* @desc Does CTF support immediate event charging?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/3.1
*/
modulepar boolean PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING := false;
/**
* @desc Does CTF support event charging with unit reservation?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/3.2
*/
modulepar boolean PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION := false;
/**
* @desc Does CTF support session charging with unit reservation?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/3.3
*/
modulepar boolean PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION := false;
/**
* @desc Does CTF support handling of online charging error cases and scenarios?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/4
*/
modulepar boolean PICS_RO_CTF_ONLINE_CHARGING_ERROR_CASES := false;
/**
* @desc Does CTF support tariff changes during an active user session??
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/5
*/
modulepar boolean PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION := false;
/**
* @desc Does CTF support re-authorization?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/6
*/
modulepar boolean PICS_RO_CTF_RE_AUTHORIZATION := false;
/**
* @desc Does CTF support failure handling?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/7
*/
modulepar boolean PICS_RO_CTF_FAILURE_HANDLING := false;
/**
* @desc Does CTF support failover?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/8
*/
modulepar boolean PICS_RO_CTF_FAILOVER := false;
/**
* @desc Does CTF support re-authorization?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/9
*/
modulepar boolean PICS_RO_CTF_RE_AUTHORIZATION_A7_9 := false;
/**
* @desc Does CTF support handling of threshold based re-authorization triggers?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/10
*/
modulepar boolean PICS_RO_CTF_TRESHOLD_BASED_RE_AUTHORIZATION_TRIGGERS := false;
/**
* @desc Does CTF support sending of termination actions?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/11
*/
modulepar boolean PICS_RO_CTF_SENDING_TERMINATION_ACTIONS := false;
/**
* @desc Does CTF support handling of quota consumption time indications?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/12
*/
modulepar boolean PICS_RO_CTF_QUOTA_CONSUMPTION_TIME_INDICATIONS := false;
/**
* @desc Does CTF support receipt of service termination indications?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/13
*/
modulepar boolean PICS_RO_CTF_SERVICE_TERMINATION_INDICATIONS := false;
/**
* @desc Does CTF support handling of envelope reporting request?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/14
*/
modulepar boolean PICS_RO_CTF_ENVELOPE_REPORTING := false;
/**
* @desc Does CTF support handling of combinational quota indications?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/15
*/
modulepar boolean PICS_RO_CTF_COMBINATIONAL_QUOTA_INDICATIONS := false;
/**
* @desc Does CTF support handling of online control of offline
* charging information indications?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/16
*/
modulepar boolean PICS_RO_CTF_OFFLINE_CHARGING_INFORMATION := false;
/**
* @desc Does CTF support CCFH configured for TERMINATE?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/17.1
*/
modulepar boolean PICS_RO_CTF_CCFH_TERMINATE := false;
/**
* @desc Does CTF support CCFH configured for RETRY_AND_TERMINATE?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/17.2
*/
modulepar boolean PICS_RO_CTF_CCFH_RETRY_AND_TERMINATE := false;
/**
* @desc Does CTF support CCFH configured for CONTINUE?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/17.3
*/
modulepar boolean PICS_RO_CTF_CCFH_CONTINUE := false;
/**
* @desc Does CTF support DDFH configured for TERMINATE_OR_BUFFER?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/18.1
*/
modulepar boolean PICS_RO_CTF_DDFH_TERMINATE_OR_BUFFER := false;
/**
* @desc Does CTF support DDFH configured for CONTINUE?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/18.2
*/
modulepar boolean PICS_RO_CTF_DDFH_CONTINUE := false;
/**
* @desc Does CTF support independent credit-control of multiple services within a (sub-)session?
* @see ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/19
*/
modulepar boolean PICS_RO_CTF_SUB_SESSION := false;
} // End of group PICS_A7
} // End of module DiameterRfRo_PICS DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn/DiameterRfRo_PIXITS.ttcn 0000664 0000000 0000000 00000044012 13523273236 0030356 0 ustar 00root root 0000000 0000000 /**
* @author STF 490
* @version $Id$
* @desc This module provides the PIXIT used for the RfRo DIAMETER tests.
*/
module DiameterRfRo_PIXITS {
// LibCommon
import from LibCommon_BasicTypesAndValues all;
// LibDiameter
import from LibDiameter_Types_Base_AVPs all;
import from LibDiameter_Types_RfRo_AVPs all;
import from LibDiameter_Types_Gx_AVPs all;
import from LibDiameter_Types_S9_AVPs all;
group Port_and_addresses{
group TS_RfRo_Port_and_addresses{
/** @desc charstring, PIXIT item A-7/1
* IP address of the test system
*/
modulepar charstring PX_DIAMETER_RF_ETS_IPADDR := "1.1.1.10";
/** @desc integer, PIXIT item A-7/2
* Port number of the test system
*/
modulepar integer PX_DIAMETER_RF_ETS_PORT := 3868;
/** @desc charstring, PIXIT item A-7/3
* IP address of the test system
*/
modulepar charstring PX_DIAMETER_RF_ETS_IPADDR2 := "1.1.1.11";
/** @desc integer, PIXIT item A-7/4
* Port number of the test system
*/
modulepar integer PX_DIAMETER_RF_ETS_PORT2 := 3868;
/** @desc charstring, PIXIT item A-7/5
* IP address of the test system
*/
modulepar charstring PX_DIAMETER_RO_ETS_IPADDR := "1.1.1.12";
/** @desc integer, PIXIT item A-7/6
* Port number of the test system
*/
modulepar integer PX_DIAMETER_RO_ETS_PORT := 3868;
/** @desc charstring, PIXIT item A-7/7
* IP address of the test system
*/
modulepar charstring PX_DIAMETER_RO_ETS_IPADDR2 := "1.1.1.13";
/** @desc integer, PIXIT item A-7/8
* Port number of the test system
*/
modulepar integer PX_DIAMETER_RO_ETS_PORT2 := 3868;
/** @desc charstring, PIXIT item A-7/9
* IP address of the test system
*/
modulepar charstring PX_DIAMETER_GM_ETS_UE_IPADDR := "1.1.1.100";
/** @desc integer, PIXIT item A-7/10
* Port number of the test system UE
*/
modulepar integer PX_DIAMETER_GM_ETS_UE_PORT := 5060;
/** @desc charstring, PIXIT item A-7/11
* IP address of the test system
*/
modulepar charstring PX_DIAMETER_MW_ETS_CSCF_IPADDR := "1.1.1.200";
/** @desc integer, PIXIT item A-7/12
* Port number of the test system UE
*/
modulepar integer PX_DIAMETER_MW_ETS_CSCF_PORT := 5060;
} // End of group TS_RfRo_Port_and_addresses
group SUT_RfRo_Port_and_addresses{
/** @desc charstring, PIXIT item A-8/1
* IP address of the system under test
*/
modulepar charstring PX_DIAMETER_RF_SUT_IPADDR := "1.1.2.10";
/** @desc integer, PIXIT item A-8/2
* Port number of the system under test
*/
modulepar integer PX_DIAMETER_RF_SUT_PORT := 3868;
/** @desc charstring, PIXIT item A-8/3
* IP address of the system under test
*/
modulepar charstring PX_DIAMETER_RO_SUT_IPADDR := "1.1.2.11";
/** @desc integer, PIXIT item A-8/4
* Port number of the system under test
*/
modulepar integer PX_DIAMETER_RO_SUT_PORT := 3868;
/** @desc charstring, PIXIT item A-8/5
* IP address of the system under test
*/
modulepar charstring PX_DIAMETER_GM_SUT_PCSCF_IPADDR := "1.1.2.100";
/** @desc integer, PIXIT item A-8/6
* Port number of the system under test
*/
modulepar integer PX_DIAMETER_GM_SUT_PCSCF_PORT := 5060;
/** @desc charstring, PIXIT item A-8/7
* IP address of the system under test
*/
modulepar charstring PX_DIAMETER_MW_SUT_CSCF_IPADDR := "1.1.2.200";
/** @desc integer, PIXIT item A-8/8
* Port number of the system under test
*/
modulepar integer PX_DIAMETER_MW_SUT_CSCF_PORT := 5060;
}//end group SUT_RfRo_Port_and_addresses{
} // End of group Port_and_addresses
group DiameterCommonRfRoData{
/** @desc UTF8String, PIXIT item A-10/1
The Session-Id AVP (AVP Code 263) is of type UTF8String and is used
to identify a specific session (see Section 8); All messages
pertaining to a specific session MUST include only one Session-Id AVP
and the same value MUST be used throughout the life of a session;
When present, the Session-Id SHOULD appear immediately following the
Diameter Header (see Section 3);
Ref: RFC 3588 section 8-8
*/
modulepar UTF8String PX_SessionID := "ctf.etsi.org;1317059245;52;21823490";
/** @desc charstring, PIXIT item A-10/2
The Origin-Host AVP (AVP Code 264) is of type DiameterIdentity, and
MUST be present in all Diameter messages; This AVP identifies the
endpoint that originated the Diameter message; Relay agents MUST NOT
modify this AVP;
The value of the Origin-Host AVP is guaranteed to be unique within a
single host;
Ref: RFC 3588 section 6-3.
NOTE: could be AF or PCRF role:
pcscf.example.com
pcrf.example.com
*/
modulepar charstring PX_OriginHost := "origin.etsi.org";
/** @desc charstring, PIXIT item A-10/3
The Origin-Host AVP (AVP Code 264) is of type DiameterIdentity, and
MUST be present in all Diameter messages; This AVP identifies the
endpoint that originated the Diameter message; Relay agents MUST NOT
modify this AVP;
The value of the Origin-Host AVP is guaranteed to be unique within a
single host;
Ref: RFC 3588 section 6-3.
NOTE: could be AF or PCRF role:
pcscf.example.com
pcrf.example.com
*/
modulepar charstring PX_OriginHost_2nd := "origin2.etsi.org";
/** @desc charstring, PIXIT item A-10/4
The Origin-Realm AVP (AVP Code 296) is of type DiameterIdentity;
This AVP contains the Realm of the originator of any Diameter message
and MUST be present in all messages;
Ref: RFC 3588 section 6-4
*/
modulepar charstring PX_OriginRealm := "etsi.org";
/** @desc charstring, PIXIT item A-10/5
The Destination-Host AVP (AVP Code 293) is of type DiameterIdentity;
This AVP MUST be present in all unsolicited agent initiated messages,
MAY be present in request messages, and MUST NOT be present in Answer
messages;
Ref: RFC 3588 section 6-5.
NOTE: could be AF or PCRF role:
pcscf.example.com
pcrf.example.com
*/
modulepar charstring PX_DestinationHost := "destination.etsi.org";
/** @desc charstring, PIXIT item A-10/6
The Destination-Realm AVP (AVP Code 283) is of type DiameterIdentity,
and contains the realm the message is to be routed to; The
Destination-Realm AVP MUST NOT be present in Answer messages.
Diameter Clients insert the realm portion of the User-Name AVP;
Diameter servers initiating a request message use the value of the
Origin-Realm AVP from a previous message received from the intended
target host (unless it is known a priori); When present, the
Destination-Realm AVP is used to perform message routing decisions;
Ref: RFC 3588 section 6-6
*/
modulepar charstring PX_DestinationRealm := "myalupcrf.etsi.org";
} // End of group DiameterCommonRfRoData
group OcfContext {
/**
* @desc The CC-Time AVP value, PIXIT item A-10/7
*/
modulepar UInt32 PX_CC_TIME_VALUE := 32;
/**
* @desc The CC-Time AVP value, PIXIT item A-10/8
*/
modulepar UInt32 PX_CC_TIME_VALUE_USED := 16;
/**
* @desc The Service Context Identifier, PIXIT item A-10/9
*/
modulepar UTF8String PX_SERVICE_CONTEXT_ID := "ContextId";
/**
* @desc The Trigger-Type AVP value, PIXIT item A-10/10
*/
modulepar Trigger_Type PX_TRIGGER_TYPE := CHANGEINQOS_TRAFFIC_CLASS_E;
/**
* @desc The Redirect-Address-Type AVP value (e.g. IPv4), PIXIT item A-10/11
*/
modulepar Redirect_Address_Ty_Type PX_REDIRECT_ADDRESS_TYPE := IPV4_ADDRESS_E;
/**
* @desc The Redirect-Server-Address AVP value, PIXIT item A-10/12
*/
modulepar UTF8String PX_REDIRECT_SERVER_ADDRESS := "10.1.1.1";
/**
* @desc The The Time-Quota-Type AVP value, PIXIT item A-10/13
*/
modulepar Time_Quota_Type PX_TIME_QUOTA_TYPE := DISCRETE_TIME_PERIOD_E;
/**
* @desc The secondary OCF address, PIXIT item A-10/14
*/
modulepar UTF8String PX_SECONDARY_OCF_ADDRESS := "10.1.1.10";
/**
* @desc Variant values for Reporting_Reason AVP, PIXIT item A-10/15
* @see ETSI DTS/INT-00103-2 V0.0.8 (2014-11) f_TC_RO_CTF_OP_05
* test purpose variants Reporting_Reason AVP values:
*
* VA_01 QHT_E (1)
* VA_02 FINAL_E (2)
* VA_03 VALIDITY_TIME_E (4)
* VA_04 FORCED_REAUTHORISATION_E (7)
*/
modulepar Reporting_Reason PX_REPORTING_REASON_TYPE_TABLE4 := QHT_E;
/**
* @desc Variant values for Reporting_Reason AVP, PIXIT item A-10/16
* @see ETSI DTS/INT-00103-2 V0.0.8 (2014-11) f_TC_RO_CTF_OP_07
* test purpose variants Reporting_Reason AVP values:
*
* VA_01 THRESHOLD_E (0)
* VA_02 QUOTA_EXHAUSTED_E (3)
* VA_03 OTHER_QUOTA_TYPE_E (5)
* VA_04 POOL_EXHAUSTED_E (8)
*/
modulepar Reporting_Reason PX_REPORTING_REASON_TYPE_TABLE5 := THRESHOLD_E;
/**
* @desc Variant values for Time_Quota_Type AVP, PIXIT item A-10/17
* @see ETSI DTS/INT-00103-2 V0.0.8 (2014-11) f_TC_RO_CTF_OP_18
* test purpose variants Reporting_Reason AVP values:
*
* VA_01 DISCRETE_TIME_PERIOD_E (0)
* VA_02 CONTINUOUS_TIME_PERIOD_E (1)
*/
modulepar Time_Quota_Type PX_TIME_QUOTA_TYPE_TABLE6 := DISCRETE_TIME_PERIOD_E;
/**
* @desc integer for variant selection, PIXIT item A-10/19
* @see ETSI DTS/INT-00121-2 V0.0.19 (2015-10)
* test purpose variants Vales due to TPs:
* VA_01
* VA_02
* VA_03
* VA_04
* VA_05
*/
modulepar integer PX_VA := 1;
} // End of group ocfContext
group SipParameters {
/**
* @desc boolean indicator that is true if the Gm interface (SIP protocol) is accessible to trigger Diameter events at the Cx/Dx interface
*/
modulepar boolean PX_SIPsupport := false;
group UE1 {
/** @desc charstring for IP address used by the TS to exchange media streams for UE1
*/
modulepar charstring PX_IMS_SUT_UE1_BEARER_IPADDR := "172.31.10.2";
/** @desc charstring for identity of the tester UE1 local domain
*/
modulepar charstring PX_IMS_SUT_UE1_HOME_DOMAIN := "sut.net";
/** @desc charstring for identity of the tester UE1 local user
*/
modulepar charstring PX_IMS_SUT_UE1_PUBLIC_USER := "2910";
/** @desc charstring for RFC 2617 clause 3-2-2 username of UE1:
* The name of user in the specified realm
*/
modulepar charstring PX_IMS_SUT_UE1_PRIVAT_USERNAME := "abcd";
/** @desc charstring for RFC 2617 clause 3-2-2-2 passwd of UE 1: A known shared secret, the password of user of the specified username
*/
modulepar charstring PX_IMS_SUT_UE1_PRIVAT_PASSWD := "1234";
/** @desc charstring for RFC 2617 clause 3-2-1 qop options of UE1:
* Quoted string of one or more tokens indicating the "quality of protection" values supported by the server; the
* value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection.
*/
modulepar charstring PX_IMS_SUT_UE1_QOP := "auth";
/** @desc charstring for home(SUT) REGISTRAR domain of UE1
*/
modulepar charstring PX_IMS_SUT_UE1_REGISTRAR := "registrar.sut.net";
} //end group UE1
group UE2{
/** @desc charstring for IP address used by the TS to exchange media streams for UE2
*/
modulepar charstring PX_IMS_SUT_UE2_BEARER_IPADDR := "172.31.10.2";
/** @desc charstring for identity of the tester UE2 local domain
*/
modulepar charstring PX_IMS_SUT_UE2_HOME_DOMAIN := "sut.net";
/** @desc charstring for identity of the tester UE2 local user
*/
modulepar charstring PX_IMS_SUT_UE2_PUBLIC_USER := "2910";
/** @desc charstring for RFC 2617 clause 3-2-2 username of UE2:
* The name of user in the specified realm
*/
modulepar charstring PX_IMS_SUT_UE2_PRIVAT_USERNAME := "abcd";
/** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2
*/
modulepar charstring PX_IMS_SUT_UE2_PRIVAT_PASSWD := "1234";
/** @desc charstring for RFC 2617 clause 3-2-1 qop options UE2:
* Quoted string of one or more tokens indicating the "quality of protection" values supported by the server, the
* value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection.
*/
modulepar charstring PX_IMS_SUT_UE2_QOP := "auth";
/** @desc charstring for home(SUT) REGISTRAR domain of UE2
*/
modulepar charstring PX_IMS_SUT_UE2_REGISTRAR := "registrar.sut.net";
/** @desc charstring for UE2 display name
*/
modulepar charstring PX_IMS_SUT_UE2_DISPLAY := "UE2@SUT";
}//end group UE2
group SimulatedIMSwithUE{
/** @desc charstring for SUT - PCSCF4 IP address to exchange SIP messages - connection point for UE4
*/
modulepar charstring PX_IMS_SUT_PCSCF4_IPADDR := "172.31.10.2";
/** @desc integer for SUT - PCSCF4 port number to exchange SIP messages - connection point for UE4
*/
modulepar integer PX_IMS_SUT_PCSCF4_PORT := 5060;
/** @desc charstring for SUT/PCSCF4 domain - connection point for UE4
*/
modulepar charstring PX_IMS_SUT_PCSCF4_HOME_DOMAIN := "pcscf4.home.net";
/** @desc charstring for IP address used by the TS to exchange media streams for UE4
*/
modulepar charstring PX_IMS_SUT_UE4_BEARER_IPADDR := "172.31.10.2";
/** @desc charstring for identity of the tester UE2 local domain
*/
modulepar charstring PX_IMS_SUT_UE4_HOME_DOMAIN := "sut.net";
/** @desc charstring for identity of the tester UE4 local user
*/
modulepar charstring PX_IMS_SUT_UE4_PUBLIC_USER := "2910";
/** @desc charstring for RFC 2617 clause 3-2-2 username of UE4:
* The name of user in the specified realm
*/
modulepar charstring PX_IMS_SUT_UE4_PRIVAT_USERNAME := "abcd";
/** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2
*/
modulepar charstring PX_IMS_SUT_UE4_PRIVAT_PASSWD := "1234";
/** @desc charstring for RFC 2617 clause 3-2-1 qop options UE4:
* Quoted string of one or more tokens indicating the "quality of protection" values supported by the server, the
* value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection.
*/
modulepar charstring PX_IMS_SUT_UE4_QOP := "auth";
/** @desc charstring for home(SUT) REGISTRAR domain of UE4
*/
modulepar charstring PX_IMS_SUT_UE4_REGISTRAR := "registrar.sut.net";
}//end group SimulatedIMSwithUE
} //end group SipParameters
} // End of module DiameterRfRo_PIXITS DiameterRfRo_SIP_TCFunctions.ttcn 0000664 0000000 0000000 00000226726 13523273236 0032207 0 ustar 00root root 0000000 0000000 DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn /**
* @author STF 490, 512
* @version $Id$
* @desc This module provides SIP/IMS test functions used by the test cases
* for IMS-DIAMETER tests. Test functions comes from TS 102 790 standard
* and are modified due to new LibIms/LibSip library V3.X.X. All tests are
* adopted with new sinchronization points due to Rf/Ro TSS/TP test specifications.
*/
module DiameterRfRo_SIP_TCFunctions {
//LibCommon
import from LibCommon_Sync all ;
//LibSip
import from LibSip_SIPTypesAndValues all;
import from LibSip_Templates all;
import from LibSip_Steps all;
import from LibSip_Interface all;
import from LibSip_PIXITS all;
import from LibSip_Common all;
//LibIms
import from LibIms_Templates all;
import from LibIms_Steps all;
import from LibIms_Interface all;
// DiameterRfRo
import from DiameterRfRo_SIP_Templates all;
import from DiameterRfRo_PIXITS all;
group TP_RF_Role {
// 5.2.2.2. CTF Role
group TP_RF_CTF_Role {
// 5.2.2.2.2 Message Syntax
group TP_RF_CTF_MS {
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_MS_UE_01
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_MS_UE_01(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
// Test Body
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_MS_UE_01
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_MS_CSCF_01
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_MS_CSCF_01(in CSeq p_cSeq_s) runs on ImsComponent {
var REGISTER_Request v_register;
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration(p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_MS_CSCF_01
} // End of group TP_RF_CTF_MS_Role
// 5.2.2.2.3 Type of Charging
group TP_RF_CTF_TC {
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_01_VA1
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_TC_UE_01_VA1(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
// prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE
LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_ICSCFwithHomeUE), f_initSipUrl(vc_userprofile.id));
f_SendMESSAGE(m_MESSAGE_Request_MBody_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, vc_route_REG, omit, m_mBody_plainText("Hello!")));//vc_route is set after 200OkRegister from ServiceRoute: if not then vc_route need to be prepare in set_header function:(
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
// await response - 200 OK ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_UE_01_VA1
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_01_VA1
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_TC_CSCF_01_VA1(in CSeq p_cSeq_s) runs on ImsComponent {
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration(p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Testbody
//Awaiting MESSAGE
f_awaitingMESSAGE(mw_MESSAGE_Request_PchargingVector(?,?));//icid-value checked in template
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_send200OK();
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
//Postamble
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_IMS1_withoutRegistration();
} // end function f_TC_CTF_TC_CSCF_01_VA1
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_01_VA2
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_TC_UE_01_VA2(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// Variables & defaults initialization
f_IMS_preamble_woRegistration(p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
// Preamble
f_Registration(p_cSeq_s, v_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED);
// deregistration in case of successful registration
vc_DeregDone := false;
f_setHeaders_SUBSCRIBE(p_cSeq_s);
f_Subscription(p_cSeq_s, m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_route_REG));
// Test Body
// prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE
LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_ICSCFwithHomeUE), f_initSipUrl(vc_userprofile.id));
f_SendMESSAGE(m_MESSAGE_Request_MBody_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, vc_route_REG, omit, m_mBody_plainText("Hello!")));//vc_route is set after 200OkRegister from ServiceRoute: if not then vc_route need to be preparee in set_header function:(
// await response - 200 OK ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_UE_01_VA2
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_01_VA2
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_TC_CSCF_01_VA2(in CSeq p_cSeq_s) runs on ImsComponent {
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration(p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Testbody
//Awaiting MESSAGE
f_awaitingMESSAGE(mw_MESSAGE_Request_PchargingVector(?,?));//icid-value checked in template
f_send200OK();
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
//Postamble
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_IMS1_withoutRegistration();
} // end function f_TC_CTF_TC_CSCF_01_VA2
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_01_VA3
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_TC_UE_01_VA3(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// Variables & defaults initialization
f_IMS_preamble_woRegistration(p_cSeq_s);
// Preamble
f_Registration(p_cSeq_s, v_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// deregistration in case of successful registration
vc_DeregDone := false;
f_setHeaders_SUBSCRIBE(p_cSeq_s);
// send SUBSCRIBE
f_SendSUBSCRIBE(m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_route_REG));
// awaiting 200 OK SUBSCRIBE
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
// await NOTIFY and send reply 200 OK
f_awaitingOkResponseAndNOTIFY_sendReply(p_cSeq_s, mw_NOTIFY_Request_Base(vc_callId));
// Test Body
// prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE
LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_ICSCFwithHomeUE), f_initSipUrl(vc_userprofile.id));
f_SendMESSAGE(m_MESSAGE_Request_MBody_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, vc_route_REG, omit, m_mBody_plainText("Hello!")));//vc_route is set after 200OkRegister from ServiceRoute: if not then vc_route need to be preparee in set_header function:(
// await response - 200 OK ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_UE_01_VA3
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_01_VA3
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_TC_CSCF_01_VA3(in CSeq p_cSeq_s) runs on ImsComponent {
f_TC_CTF_TC_CSCF_01_VA2(p_cSeq_s);
} // end function f_TC_CTF_TC_CSCF_01_VA3
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_01_VA4
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_SUB_03_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_TC_UE_01_VA4(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration( p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
//send PUBLISH
// PUBLISH UE1 f_setHeadersPUBLISH(cSeq, To, From) and send PUBLISH
LibIms_Steps.f_setHeadersPUBLISH(p_cSeq_s, f_initSipUrl(c_userProfile_ICSCFwithHomeUE), f_initSipUrl(vc_userprofile.id));
f_SendPUBLISH(m_PUBLISH_Request_UE(vc_requestUri, vc_callId, vc_cSeq,
vc_from, vc_to, vc_via, m_Event_presence, omit, m_mBody_plainText("I'M PRESENT!"),vc_route_REG));
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_UE_01_VA4
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_01_VA4
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_SUB_03_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_TC_CSCF_01_VA4(in CSeq p_cSeq_s) runs on ImsComponent {
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration( p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Testbody
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
// await PUBLISH
f_awaitingPUBLISH_sendReply(mw_PUBLISH_Request_PchargingVector(?,mw_pChargingVector(?,?)));//icid-value checked in mw template
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
// POSTAMBLE
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_IMS1_withoutRegistration();
} // end function f_TC_CTF_TC_CSCF_01_VA4
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_02
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_TC_UE_02(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
//vc_boo_route should be set to false - otherwise in setHeadersINVITE Route header is tried to be set with interface profile. This shouldn't be done in UE case. It should be done only on mw,ics or ic interfaces.
vc_boo_route := false;
// INVITE UE1 f_setHeadersINVITE(cSeq, To, From) amd send INVITE
LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_ICSCFwithHomeUE), f_initSipUrl(vc_userprofile.id));
f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, valueof(m_MBody_SDP(vc_sdp_local))));
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
//await response - 200 ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
// send ACK
LibSip_Steps.f_setHeadersACK();
f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq,
vc_from, vc_to, vc_via, vc_route));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
//send BYE await response
f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To);
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_UE_02
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_02
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_TC_CSCF_02(in CSeq p_cSeq_s) runs on ImsComponent {
var REGISTER_Request v_register;
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration(p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// await INVITE UE1@SUT
f_awaitingINVITE(mw_INVITE_Request_noPChargingFunction);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
//send response - 200
f_sendResponse(m_Response_2xxonINVITE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_addNewRecordRouteIMS(valueof(vc_recordRoute)), valueof(m_MBody_SDP(vc_sdp_local))));
// Test Body
// await ACK
f_awaitingACK(mdw_ACK_Request_noPchargingVector(vc_callId)); // P-Charging-Function-Addresses does not pass network border
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
//await BYE and send 200OK
f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_CSCF_02
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_03
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_TC_UE_03(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
vc_boo_route := false;
// INVITE UE1 f_setHeadersINVITE(cSeq, To, From) amd send INVITE
LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_ICSCFwithHomeUE), f_initSipUrl(vc_userprofile.id));
f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, valueof(m_MBody_SDP(vc_sdp_local))));
//await response - 200 ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
// send ACK
LibSip_Steps.f_setHeadersACK();
f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq,
vc_from, vc_to, vc_via, vc_route));
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
//send BYE await response
f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To);
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_UE_03
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_03
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_TC_CSCF_03(in CSeq p_cSeq_s) runs on ImsComponent {
var REGISTER_Request v_register;
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration(p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// await INVITE UE1@SUT
f_awaitingINVITE(mw_INVITE_Request_noPChargingFunction);
//send response - 200
f_sendResponse(m_Response_2xxonINVITE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_addNewRecordRouteIMS(valueof(vc_recordRoute)), valueof(m_MBody_SDP(vc_sdp_local))));
// Test Body
// await ACK
f_awaitingACK(mdw_ACK_Request_noPchargingVector(vc_callId)); // P-Charging-Function-Addresses does not pass network border
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
//await BYE and send 200OK
f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_CSCF_03
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_04
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_TAR_03_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_TC_UE_04(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
vc_boo_route := false;
// INVITE UE1 f_setHeadersINVITE(cSeq, To, From) amd send INVITE
LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_ICSCFwithHomeUE), f_initSipUrl(vc_userprofile.id));
f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, m_MBody_SDP(vc_sdp_local)));
// await response - 200 ...
f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq));
// send ACK
LibSip_Steps.f_setHeadersACK();
f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq,
vc_from, vc_to, vc_via, vc_route));
// Send reINVITE
LibIms_Steps.f_setHeadersReINVITE(p_cSeq_s, true, vc_requestUri);
f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, omit, m_MBody_SDP(vc_sdp_local)));
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
// await response - 200
f_awaitingResponse(mw_Response_Base((c_statusLine200),vc_callId, vc_cSeq));
// send ACK
LibSip_Steps.f_setHeadersACK();
f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq,
vc_from, vc_to, vc_via, vc_route));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send original BYE await response to clean the session
f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To);
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_UE_04
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_04
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_TAR_03_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_TC_CSCF_04(in CSeq p_cSeq_s) runs on ImsComponent {
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration(p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// await INVITE UE1@SUT
f_awaitingINVITE(mw_INVITE_Request_Base); // no specific constraints in TP
//send response - 200
f_sendResponse(m_Response_2xxonINVITE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_addNewRecordRouteIMS(valueof(vc_recordRoute)), valueof(m_MBody_SDP(vc_sdp_local))));
// await ACK
f_awaitingACK(mw_ACK_Request_Base(vc_callId));
//await REINVITE UE1@SUT
f_awaitingINVITE(mw_INVITE_Request_Base);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_sendResponse(m_Response_2xxonINVITE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_addNewRecordRouteIMS(valueof(vc_recordRoute)), valueof(m_MBody_SDP(vc_sdp_local))));
// await ACK
f_awaitingACK(mw_ACK_Request_Base(vc_callId));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
//await BYE and send 200OK
f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_CSCF_04
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_05
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_TC_UE_05(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
vc_boo_route := false;
// INVITE UE1 f_setHeadersINVITE(cSeq, To, From) amd send INVITE
LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_ICSCFwithHomeUE), f_initSipUrl(vc_userprofile.id));
f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, valueof(m_MBody_SDP(vc_sdp_local))));
//await response - 200 ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
// send ACK
LibSip_Steps.f_setHeadersACK();
f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq,
vc_from, vc_to, vc_via, vc_route));
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
//send BYE await response
f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_UE_05
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_05
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_TC_CSCF_05(in CSeq p_cSeq_s) runs on ImsComponent {
var REGISTER_Request v_register;
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration(p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
// await INVITE UE1@SUT
f_awaitingINVITE(mw_INVITE_Request_noPChargingFunction);
//send response - 200
f_sendResponse(m_Response_2xxonINVITE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_addNewRecordRouteIMS(valueof(vc_recordRoute)), valueof(m_MBody_SDP(vc_sdp_local))));
// await ACK
f_awaitingACK(mdw_ACK_Request_noPchargingVector(vc_callId)); // P-Charging-Function-Addresses does not pass network border
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
//await BYE and send 200OK
f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_TC_CSCF_05
} // End of group TP_RF_CTF_TC_Role
// 5.2.2.2.4 Error cases
group TP_RF_CTF_EC {
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_01
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_EC_UE_01(in CSeq p_cSeq_s) runs on ImsComponent {
f_TC_CTF_TC_UE_02(p_cSeq_s);
} // end function f_TC_CTF_EC_UE_01
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_01
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_EC_CSCF_01(in CSeq p_cSeq_s) runs on ImsComponent {
f_TC_CTF_TC_CSCF_02(p_cSeq_s);
} // end function f_TC_CTF_EC_CSCF_1
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_02
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_EC_UE_02(in CSeq p_cSeq_s) runs on ImsComponent {
f_TC_CTF_TC_UE_03(p_cSeq_s);
} // end function f_TC_CTF_EC_UE_02
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_02
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_EC_CSCF_02(in CSeq p_cSeq_s) runs on ImsComponent {
f_TC_CTF_TC_CSCF_03(p_cSeq_s);
} // end function f_TC_CTF_EC_CSCF_02
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_03
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_EC_UE_03(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
vc_boo_route := false;
// INVITE UE1 f_setHeadersINVITE(cSeq, To, From) amd send INVITE
LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_ICSCFwithHomeUE), f_initSipUrl(vc_userprofile.id));
f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, valueof(m_MBody_SDP(vc_sdp_local))));
//await response - 200 ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
// send ACK
LibSip_Steps.f_setHeadersACK();
f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq,
vc_from, vc_to, vc_via, vc_route));
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
//send BYE await response
f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To);
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_EC_UE_03
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_03
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_EC_CSCF_03(in CSeq p_cSeq_s) runs on ImsComponent {
var REGISTER_Request v_register;
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration(p_cSeq_s);
//f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_SCSCF);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
// await INVITE UE1@SUT
f_awaitingINVITE(mw_INVITE_Request_noPChargingFunction);
//send response - 200
f_sendResponse(m_Response_2xxonINVITE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_addNewRecordRouteIMS(valueof(vc_recordRoute)), valueof(m_MBody_SDP(vc_sdp_local))));
// await ACK
f_awaitingACK(mdw_ACK_Request_noPchargingVector(vc_callId)); // P-Charging-Function-Addresses does not pass network border
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
//await BYE and send 200OK
f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_CTF_EC_CSCF_03
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_04
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_EC_UE_04(in CSeq p_cSeq_s) runs on ImsComponent {
f_TC_CTF_TC_UE_03(p_cSeq_s);
} // end function f_TC_CTF_EC_UE_04
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_04
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_EC_CSCF_04(in CSeq p_cSeq_s) runs on ImsComponent {
f_TC_CTF_TC_CSCF_03(p_cSeq_s);
} // end function f_TC_CTF_EC_CSCF_04
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_05
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_EC_UE_05(in CSeq p_cSeq_s) runs on ImsComponent {
f_TC_CTF_TC_UE_03(p_cSeq_s);
} // end function f_TC_CTF_EC_UE_05
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_05
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_EC_CSCF_05(in CSeq p_cSeq_s) runs on ImsComponent {
f_TC_CTF_TC_CSCF_03(p_cSeq_s);
} // end function f_TC_CTF_EC_CSCF_05
/**
* @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_06
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1
* @param p_cSeq_s
*/
function f_TC_CTF_EC_UE_06(in CSeq p_cSeq_s) runs on ImsComponent {
f_TC_CTF_TC_UE_03(p_cSeq_s);
} // end function f_TC_CTF_EC_UE_06
/**
* @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_06
* Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS
* @param p_cSeq_s
*/
function f_TC_CTF_EC_CSCF_06(in CSeq p_cSeq_s) runs on ImsComponent {
f_TC_CTF_TC_CSCF_03(p_cSeq_s);
} // end function f_TC_CTF_EC_CSCF_06
} // End of group TP_RF_CTF_EC_Role {
} // End of group TP_RF_CTF_Role
} // End of group TP_RF_Role
group TP_RO_Role {
//5.2.3.2. CTF Role
group TP_RO_CTF_Role {
// 5.2.3.2.2 Message Syntax
group TP_RO_CTF_MS {
} // End of group TP_RO_CTF_MS
// 5.2.3.2.3 Type of Charging
group TP_RO_CTF_TC {
/**
* @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_TC_UE_01
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_UE1
* @param p_cSeq_s
*/
function f_TC_RO_CTF_TC_UE_01(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
//Awaiting MESSAGE
f_awaitingMESSAGE(mw_MESSAGE_Request_noPchargingFunction_UE);
f_send200OK();
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_RO_CTF_TC_UE_01
/**
* @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_TC_CSCF_01
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_IMS
* @param p_cSeq_s
*/
function f_TC_RO_CTF_TC_CSCF_01(in CSeq p_cSeq_s) runs on ImsComponent {
var GenValue v_genValue := {tokenOrHost := "host"};
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration( p_cSeq_s);
//f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_ICSCF);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Testbody
// prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE
LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id));
f_SendMESSAGE(m_MESSAGE_Request_PCharging_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue)));
// await response - 200 OK ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
//Postamble
f_SIP_postamble_IMS1_withoutRegistration();
} // end function f_TC_RO_CTF_TC_CSCF_01
/**
* @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_TC_UE_06
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_UE1
* @param p_cSeq_s
*/
function f_TC_RO_CTF_TC_UE_06(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
//Awaiting MESSAGE
f_awaitingMESSAGE(mw_MESSAGE_Request_noPchargingFunction_UE);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_send200OK();
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_RO_CTF_TC_UE_06
/**
* @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_TC_CSCF_06
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_IMS
* @param p_cSeq_s
*/
function f_TC_RO_CTF_TC_CSCF_06(in CSeq p_cSeq_s) runs on ImsComponent {
var GenValue v_genValue := {tokenOrHost := "host"};
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration( p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Testbody
// prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE
LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id));
f_SendMESSAGE(m_MESSAGE_Request_PCharging_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue)));
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
// await response - 200 OK ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
//Postamble
f_SIP_postamble_IMS1_withoutRegistration();
} // end function f_TC_RO_CTF_TC_CSCF_06
/**
* @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_TC_UE_08
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_07_UE1
* @param p_cSeq_s
*/
function f_TC_RO_CTF_TC_UE_08(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
//Awaiting INVITE
f_awaitingINVITE(mw_INVITE_Request_noPChargingFunction);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200,vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via,vc_contact,f_recordroute(),valueof(m_MBody_SDP(vc_sdp_local))));
// await ACK
f_awaitingACK(mw_ACK_Request_Base(vc_callId));
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());// sync point sync2
//await BYE and send 200OK
f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_RO_CTF_TC_UE_08
/**
* @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_TC_CSCF_08
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_07_IMS
* @param p_cSeq_s
*/
function f_TC_RO_CTF_TC_CSCF_08(in CSeq p_cSeq_s) runs on ImsComponent {
var REGISTER_Request v_register;
var GenValue v_genValue := {tokenOrHost := "host"};
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration( p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// INVITE UE1 f_setHeadersINVITE(cSeq, To, From) amd send INVITE
LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id));
f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, omit/* vc_route*/, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue), valueof(m_MBody_SDP(vc_sdp_local))));
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
//await response - 200
f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq));
// send ACK
LibSip_Steps.f_setHeadersACK();
f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq,
vc_from, vc_to, vc_via, vc_route));
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());// sync point sync2
//send BYE and await 200OK
f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
f_SIP_postamble_IMS1_withoutRegistration();
} // end function f_TC_RO_CTF_TC_CSCF_08
} // End of group TP_RO_CTF_TC
// 5.2.3.2.4 Error Casses
group TP_RO_CTF_EC {
} // End of group TP_RO_CTF_EC
// 5.2.3.2.5 Tariff Changes
group TP_RO_CTF_CH {
} // End of group TP_RO_CTF_CH
// 5.2.3.2.6 Re-Authorization
group TP_RO_CTF_RE {
} // End of group TP_RO_CTF_RE
// 5.2.3.2.7 Failure Handling
group TP_RO_CTF_FH {
/**
* @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_FH_UE_01
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_UE1
* @param p_cSeq_s
*/
function f_TC_RO_CTF_FH_UE_01(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
//Awaiting MESSAGE
f_awaitingMESSAGE(mw_MESSAGE_Request_noPchargingFunction_UE);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());// sync point sync2
f_send200OK();
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_RO_CTF_FH_UE_01
/**
* @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_FH_CSCF_01
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_IMS
* @param p_cSeq_s
*/
function f_TC_RO_CTF_FH_CSCF_01(in CSeq p_cSeq_s) runs on ImsComponent {
var GenValue v_genValue := {tokenOrHost := "host"};
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration( p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Testbody
// prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE
LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id));
f_SendMESSAGE(m_MESSAGE_Request_PCharging_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue)));
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());// sync point sync2
// await response - 200 OK ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
//Postamble
f_SIP_postamble_IMS1_withoutRegistration();
} // end function f_TC_RO_CTF_FH_CSCF_01
/**
* @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_FH_UE_02
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_UE1
* @param p_cSeq_s
*/
function f_TC_RO_CTF_FH_UE_02(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
//Awaiting MESSAGE
f_awaitingMESSAGE(mw_MESSAGE_Request_noPchargingFunction_UE);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_send200OK();
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_RO_CTF_FH_UE_02
/**
* @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_FH_CSCF_02
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_IMS
* @param p_cSeq_s
*/
function f_TC_RO_CTF_FH_CSCF_02(in CSeq p_cSeq_s) runs on ImsComponent {
var GenValue v_genValue := {tokenOrHost := "host"};
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_init_userprofile(c_userProfile_UE1atSUThome);
f_IMS_preamble_woRegistration( p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Testbody
// prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE
LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_ICSCFwithHomeUE), f_initSipUrl(vc_userprofile.id));
f_SendMESSAGE(m_MESSAGE_Request_PCharging_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue)));
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
// await response - 200 OK ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
//Postamble
f_SIP_postamble_IMS1_withoutRegistration();
} // end function f_TC_RO_CTF_FH_CSCF_02
} // End of group TP_RO_CTF_FH
// 5.2.3.2.8 Failover
group TP_RO_CTF_FA {
/**
* @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_FA_UE_02
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_UE1
* @param p_cSeq_s
*/
function f_TC_RO_CTF_FA_UE_02(in CSeq p_cSeq_s) runs on ImsComponent {
var template REGISTER_Request v_register;
f_init_userprofile(c_userProfile_UE1atSUThome);
v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization));
// preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting
f_IMS_preamble_withRegistration(p_cSeq_s, v_register);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Test Body
//Awaiting MESSAGE
f_awaitingMESSAGE(mw_MESSAGE_Request_noPchargingFunction_UE);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_send200OK();
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done
// POSTAMBLE
// send REGISTER, await 401, send REGISTER, await 200 OK
f_RemoveRegistration(vc_cSeq); // deregistration in SUT
f_SIP_postamble_UE_withoutRegistration();
} // end function f_TC_RO_CTF_FA_UE_02
/**
* @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_FA_CSCF_02
* Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_IMS
* @param p_cSeq_s
*/
function f_TC_RO_CTF_FA_CSCF_02(in CSeq p_cSeq_s) runs on ImsComponent {
var GenValue v_genValue := {tokenOrHost := "host"};
f_init_userprofile(c_userProfile_ICSCFwithHomeUE);
f_IMS_preamble_woRegistration( p_cSeq_s);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
// Testbody
// prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE
LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id));
f_SendMESSAGE(m_MESSAGE_Request_PCharging_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue)));
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
// await response - 200 OK ...
f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
//Postamble
f_SIP_postamble_IMS1_withoutRegistration();
} // end function f_TC_RO_CTF_FA_CSCF_02
} // End of group TP_RO_CTF_FA
// 5.2.3.2.9 Credit Pooling
group TP_RO_CTF_CP {
} // End of group TP_RO_CTF_CP
// 5.2.3.2.10 Other Procedures
group TP_RO_CTF_OP {
} // End of group TP_RO_CTF_OP
}//End of group TP_RO_CTF_Role
} // End of group TP_RO_Role
group UserProfiles{
/*
*
* @desc sets user parameters with PIXIT values
* @param p_user identifies the selected user configuration and location
* @verdict
*/
function f_init_userprofile(in integer p_user) runs on ImsComponent
{
vc_userprofile.id := p_user;
select(p_user){
case (c_userProfile_UE1atSUThome) { //variant c_userProfile_UE1atSUThome
vc_userprofile.currPort := PX_DIAMETER_GM_ETS_UE_PORT;
vc_userprofile.currIpaddr := PX_DIAMETER_GM_ETS_UE_IPADDR;
vc_userprofile.contactPort := PX_DIAMETER_GM_ETS_UE_PORT;
vc_userprofile.contactIpaddr := PX_DIAMETER_GM_ETS_UE_IPADDR;
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN;
vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER;
vc_userprofile.qop := PX_IMS_SUT_UE1_QOP;
vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME;
vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD;
vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR;
}
// case (c_userProfile_UE2atSUThome) { //variant c_userProfile_UE2atSUThome
// vc_userprofile.currPort := PX_IMS_TS_UE2_PORT;
// vc_userprofile.currIpaddr := PX_IMS_TS_UE2_IPADDR;
// vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT;
// vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR;
// vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE2_BEARER_IPADDR;
// vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN;
// vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER;
// vc_userprofile.qop := PX_IMS_SUT_UE2_QOP;
// vc_userprofile.privUsername := PX_IMS_SUT_UE2_PRIVAT_USERNAME;
// vc_userprofile.passwd := PX_IMS_SUT_UE2_PRIVAT_PASSWD;
// vc_userprofile.registrarDomain := PX_IMS_SUT_UE2_REGISTRAR;
// }
case (c_userProfile_ICSCFwithHomeUE) { //variant c_userProfile_ICSCFwithHomeUE - UE4 parameters
vc_userprofile.currPort := PX_DIAMETER_MW_ETS_CSCF_PORT; // via (Mw interface of TS)
vc_userprofile.currIpaddr := PX_DIAMETER_MW_ETS_CSCF_IPADDR;// via
vc_userprofile.contactPort := 5060; // contact (simulated UE port)
vc_userprofile.contactIpaddr := "192.168.100.100"; // contact (simulated UE IP address)
vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR;
vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register)
vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register)
vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization
vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization
vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization
vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization
}
}
}//end function f_init_userprofile
function f_initSipUrl(in integer p_user) runs on ImsComponent return SipUrl
{
var SipUrl v_sipUrl := {
scheme := c_sipScheme, // contains "sip"
components := { sip:= {
userInfo := omit,
hostPort := {omit,omit}}},
urlParameters := omit,
headers := omit};
select(p_user){
case (c_userProfile_UE1atSUThome) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE1_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE1_HOME_DOMAIN, portField :=omit}
}
case (c_userProfile_UE2atSUThome) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE2_PUBLIC_USER, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE2_HOME_DOMAIN, portField :=omit}
}
case (c_userProfile_ICSCFwithHomeUE) {
v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE4_PUBLIC_USER/*PX_IMS_TS_IMS1UE_PUBLIC_USER*/, password:=omit};
v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE4_HOME_DOMAIN/*PX_IMS_TS_IMS1UE_HOME_DOMAIN*/, portField :=omit}
}
};
return(v_sipUrl)
}//end function f_initSipUrl
}//end group UserProfiles{
} // End of module DiameterRfRo_SIP_TCFunctions DiameterRfRo_SIP_Templates.ttcn 0000664 0000000 0000000 00000003674 13523273236 0031741 0 ustar 00root root 0000000 0000000 DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn /**
* @author STF 490
* @version $Id$
* @desc This module defines Gx and Gxx Diameter Templates for message, header, and
* structured types.
* Note that any changes made to the definitions in this module
* may be overwritten by future releases of this library
* End users are encouraged to contact the distributers of this
* module regarding their modifications or additions.
* Note that usage of encvalue command (codec function) returns bitstring
* length of the message or AVP with padding bytes. Therefore this function
* is not used on the first level where length of one single AVP can be
* calculated with lengthof function. It shall be used only on message level
* or in case where one AVP is group of other AVPs.
* @remark Any additions to the templates shall follow the design rules
* and always modify base templates only;
*/
module DiameterRfRo_SIP_Templates {
// LibSip
import from LibSip_SIPTypesAndValues all;
import from LibSip_Templates{template mw_ACK_Request_Base;};
group Constants {
const integer c_userProfile_UE1atSUThome := 1;
const integer c_userProfile_UE2atSUThome := 2;
const integer c_userProfile_ICSCFwithHomeUE := 3;
}//end group Constants
group requestReceive_Modified {
template (present) ACK_Request mdw_ACK_Request_noPchargingVector(
in template (present) CallId p_callId
) modifies mw_ACK_Request_Base := {
msgHeader := {
pChargingVector := omit
}
}
} //end group requestReceive {
} // End of module DiameterRfRo_SIP_Templates DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn/DiameterRfRo_Steps.ttcn 0000664 0000000 0000000 00000073430 13523273236 0030442 0 ustar 00root root 0000000 0000000 /**
* @author STF 490
* @version $Id$
* @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;
import from LibCommon_BasicTypesAndValues {type UInt8;type UInt32;};//LibCommon
import from LibCommon_Sync all ;
import from LibCommon_VerdictControl all ;
//LibDiameter
import from LibDiameter_Types_RfRo_AVPs all;
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;
//DiameterRFRo
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 {
//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_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;
vc_sessionId := m_sessionId(PX_SessionID);
vc_originHost := m_originHost(PX_OriginHost);
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);
vc_destinationHost_IUT := m_destinationHost(PX_OriginHost);
vc_destinationRealm_IUT := m_destinationRealm(PX_OriginRealm);
vc_hostIPAddress := valueof(f_IPV4or6_String2Address (PX_DIAMETER_RF_ETS_IPADDR));
vc_accountingRecordNumber := mw_accounting_Record_Number(3);
vc_send_hopid:=hex2int('00000100'H);
vc_send_endid:=hex2int('01000000'H);
} // End of function f_DiameterRf_init
/*
* @desc This is a test step that init global variables
* @param
*/
function f_DiameterRf_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_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;
vc_sessionId := m_sessionId(PX_SessionID&"1");
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);
vc_destinationHost_IUT := m_destinationHost(PX_OriginHost_2nd);
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);
vc_send_hopid:=hex2int('00000100'H);
vc_send_endid:=hex2int('01000000'H);
} // End of function f_DiameterRf_init2
/*
* @desc This is a test step that init global variables
* @param
*/
function f_DiameterRo_init()
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_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;
vc_sessionId := m_sessionId(PX_SessionID);
vc_originHost := m_originHost(PX_OriginHost);
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);
vc_destinationHost_IUT := m_destinationHost(PX_OriginHost);
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
/*
* @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);
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);
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
} // Endgroup GlobalSteps
group Preambles{
function f_preamble_Rf_CDF() runs on DiameterRfRo
{
var default v_def_diameter_catchEvent;
if(PX_DIAM_LLP_ENABLED)
{
f_preambleServer();
}
f_DiameterRf_init();
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);
}
function f_preamble_Rf_CDF2() runs on DiameterRfRo
{
var default v_def_diameter_catchEvent;
if(PX_DIAM_LLP_ENABLED)
{
f_preambleServer();
}
f_DiameterRf_init2();
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);
}
function f_preamble_Rf_CTF() runs on DiameterRfRo
{
if(PX_DIAM_LLP_ENABLED)
{
f_preambleClient();
}
f_DiameterRf_init();
f_preambleDiameterBaseClient_acct_Application_Id_AVP(c_applIdRf);
}
function f_preamble_Ro_OCF() runs on DiameterRfRo
{
if(PX_DIAM_LLP_ENABLED)
{
f_preambleServer();
}
f_DiameterRo_init();
f_preambleDiameterBaseServer(c_applIdRo);
}
function f_preamble_Ro_OCF2() runs on DiameterRfRo
{
if(PX_DIAM_LLP_ENABLED)
{
f_preambleServer();
}
f_DiameterRo_init2();
f_preambleDiameterBaseServer(c_applIdRo);
}
function f_preamble_Ro_CTF() runs on DiameterRfRo
{
if(PX_DIAM_LLP_ENABLED)
{
f_preambleClient();
}
f_DiameterRo_init();
f_preambleDiameterBaseClient(c_applIdRo);
}
} // 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
group RF{
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
* 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
{
f_send_ACR(
md_aCR(
vc_sessionId,
md_acrBodyAvps_TypeOfCharging(
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
),
m_event_timestamp(p_ts),
m_Service_Information_RF_CDF_TC
)
)
);
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
),
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
p_art
),
mw_accounting_Record_Number(// containing an Acct-Application-Id AVP
p_cC_Request_Number // indicating the value
)
))
);
} //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(
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_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_
} // End of group TypeOfCharging
} // End of group RF
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
* @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_(
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,
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,
md_cC_Request_Type(
p_cC_Request_Ty_Type
),
md_cC_Request_Number(
p_cC_Request_Number
),
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
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_auth_Application_Id(4),
mw_cC_Request_Type(
p_cC_Request_Ty_Type
),
mw_cC_Request_Number(
p_cC_Request_Number
)
)
)
);
}
/**
* @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,
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(
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(
vc_originHost_IUT, // containing an Origin-Host AVP
vc_originRealm_IUT, // containing an Origin-Realm AVP
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
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;
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()
}//end group DefaultTestStep
} // End of module DiameterGx_Steps DiameterRfRo_TCFunctions.ttcn 0000664 0000000 0000000 00002204211 13523273236 0031457 0 ustar 00root root 0000000 0000000 DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn /**
* @author STF 490
* @version $Id$
* @desc This module provides RfRo test functions used by the test cases
* for IMS-DIAMETER tests.
*/
module DiameterRfRo_TCFunctions {
// LibCommon
import from LibCommon_Sync all;
import from LibCommon_VerdictControl all ;
// LibDiameter
import from LibDiameter_PIXITS all;
import from LibDiameter_TypesAndValues all;
import from LibDiameter_Types_Base_AVPs all;
import from LibDiameter_Types_RfRo_AVPs all;
import from LibDiameter_Templates all;
import from LibDiameter_Interface all;
import from LibDiameter_Steps all;
//DiameterRfRo
import from DiameterRfRo_Templates all;
import from DiameterRfRo_Steps all;
import from DiameterRfRo_PIXITS all;
import from DiameterRfRo_TestSystem all;
// 5.2.2.1. CDF Role
group TP_RF_Role {
// 5.2.2.1
group TP_RF_CDF_Role {
// 5.2.2.1.2 Message Syntax
/**
*
* @desc 5.2.2.1.2 Message Syntax
*/
group TP_RF_CDF_MS {
/**
* @desc Verify that the IUT can successfully process all mandatory AVPs in an AC-Request received due to Charging Data Transfer
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CDF_MS_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_ACR(
md_aCR(
vc_sessionId,
md_acrBodyAvps_TypeOfCharging(
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
),
m_accounting_Record_Number( // containing an Accounting-Record-Number AVP
3 // indicating the value 3
)
)
)
);
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
),
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
EVENT_RECORD_E
),
mw_accounting_Record_Number( // containing an Acct-Application-Id AVP
3 // indicating the value 3
)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CDF_MS_01
function f_TC_CDF_MS_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_ACR(
md_aCR(
vc_sessionId,
md_acrBodyAvps_TypeOfCharging(
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
),
m_accounting_Record_Number( // containing an Accounting-Record-Number AVP
3 // indicating the value 3
)
)
)
);
f_awaiting_ACA(
//mw_ACA_MessageFlags
mw_ACA_CmdFlags_PET(mw_diameterHeaderAns_CmdFlags(ACA_E, ?, mw_cmdFlagsAns_PET('0'B,'0'B,'0'B)))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CDF_MS_02
} // End of group messageSyntax
// 5.2.2.1.3 Type of Charging
group TP_RF_CDF_TC {
/**
* @desc Verify that the IUT can successfully process an AC-Request [Event] where Event Based Charging is used
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RF_CDF_TC_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_ACR(
md_aCR(
vc_sessionId,
md_acrBodyAvps_TypeOfCharging(
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
),
m_accounting_Record_Number( // containing an Accounting-Record-Number AVP
3 // indicating the value 3
),
m_event_timestamp(1),
m_Service_Information_RF_CDF_TC
)
)
);
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
),
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
EVENT_RECORD_E
),
mw_accounting_Record_Number( // containing an Acct-Application-Id AVP
3 // indicating the value 3
)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RF_CDF_TC_01
/**
* @desc Verify that the IUT can successfully process an AC-Request [Start] where Session Based Charging is used
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RF_CDF_TC_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_ACR(
md_aCR(
vc_sessionId,
md_acrBodyAvps_TypeOfCharging(
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
m_accounting_Record_Type( // containing an Accounting-Record-Type AVP
START_RECORD_E
),
m_accounting_Record_Number( // containing an Accounting-Record-Number AVP
3 // indicating the value 3
),
m_event_timestamp(1),
m_Service_Information_RF_CDF_TC
)
)
);
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
),
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
START_RECORD_E
),
mw_accounting_Record_Number( // containing an Acct-Application-Id AVP
3 // indicating the value 3
)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendACR_awaitACA_(STOP_RECORD_E,3,1);
f_postamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RF_CDF_TC_02
/**
* @desc Verify that the IUT can successfully process an AC-Request [Interim] where Session Based Charging is used in case of charging condition change.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RF_CDF_TC_03() runs on DiameterRfRo {
// Local variables
var float v_interimTimer:=0.0;
// Preamble
f_preamble_Rf_CTF();
f_sendACR_awaitACA_(START_RECORD_E,3,1);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
//set of timer
if (ispresent(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval)){
v_interimTimer := int2float(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval.aVP_Data);
}
log("*** " & __SCOPE__ & ": INFO: Wait for",v_interimTimer,"s to send next ACR. ***");
f_wait(v_interimTimer);
f_send_ACR(
md_aCR(
vc_sessionId,
md_acrBodyAvps_TypeOfCharging(
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
),
m_accounting_Record_Number( // containing an Accounting-Record-Number AVP
3 // indicating the value 3
),
m_event_timestamp(1),
m_Service_Information_RF_CDF_TC
)
)
);
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
),
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
INTERIM_RECORD_E
),
mw_accounting_Record_Number( // containing an Acct-Application-Id AVP
3 // indicating the value 3
)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendACR_awaitACA_(STOP_RECORD_E,3,1);
f_postamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RF_CDF_TC_03
/**
* @desc Verify that the IUT can successfully process an AC-Request [Interim] where Session Based Charging is used in case of Acct-Interim-Interval AVP is present in the AC Request [Start]
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RF_CDF_TC_04() runs on DiameterRfRo {
// Local variables
var float v_interimTimer:=0.0;
// Preamble
f_preamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_ACR(
md_aCR(
vc_sessionId,
md_acrBodyAvps_TypeOfCharging(
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
m_accounting_Record_Type( // containing an Accounting-Record-Type AVP
START_RECORD_E
),
m_accounting_Record_Number( // containing an Accounting-Record-Number AVP
3 // indicating the value 3
),
m_event_timestamp(1),
m_Service_Information_RF_CDF_TC,
-,
m_acct_Interim_Interval(2)
)
)
);
f_awaiting_ACA(
mdw_aCA(
vc_sessionId, // containing a Session-ID AVP
mdw_acaBodyAvps_AcctInterimInterval(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
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
START_RECORD_E
),
mw_accounting_Record_Number( // containing an Acct-Application-Id AVP
3 // indicating the value 3
),
?
))
);
//set of timer
if (ispresent(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval)){
v_interimTimer := int2float(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval.aVP_Data);
}
log("*** " & __SCOPE__ & ": INFO: Wait for",v_interimTimer,"s to send next ACR. ***");
f_wait(v_interimTimer);
f_send_ACR(
md_aCR(
vc_sessionId,
md_acrBodyAvps_TypeOfCharging(
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
),
m_accounting_Record_Number( // containing an Accounting-Record-Number AVP
3 // indicating the value 3
),
m_event_timestamp(1),
m_Service_Information_RF_CDF_TC
)
)
);
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
),
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
INTERIM_RECORD_E
),
mw_accounting_Record_Number( // containing an Acct-Application-Id AVP
3 // indicating the value 3
)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendACR_awaitACA_(STOP_RECORD_E,3,1);
f_postamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RF_CDF_TC_04
/**
* @desc Verify that the IUT can successfully process an AC-Request [Stop] where Session Based Charging is used
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RF_CDF_TC_05() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CTF();
f_sendACR_awaitACA_(START_RECORD_E,3,1);
f_sendACR_awaitACA_(INTERIM_RECORD_E,3,1);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_ACR(
md_aCR(
vc_sessionId,
md_acrBodyAvps_TypeOfCharging(
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
m_accounting_Record_Type( // containing an Accounting-Record-Type AVP
STOP_RECORD_E
),
m_accounting_Record_Number( // containing an Accounting-Record-Number AVP
3 // indicating the value 3
),
m_event_timestamp(1),
m_Service_Information_RF_CDF_TC
)
)
);
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
),
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
STOP_RECORD_E
),
mw_accounting_Record_Number( // containing an Acct-Application-Id AVP
3 // indicating the value 3
)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RF_CDF_TC_05
} // End of group TypeOfCharging
//5.2.2.1.4 ErrorCases
group TP_RF_CDF_EC {
/**
* @desc Verify that the IUT can successfully process Duplicate Detection AC-Request [Event] where Event Based Charging is used
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RF_CDF_EC_01() runs on DiameterRfRo {
// Local variables
var template ACR_MSG vt_aCR_T_flag;
// Preamble
f_preamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_ACR(
md_aCR_TflagSet(
vc_sessionId,
md_acrBodyAvps_TypeOfCharging(
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
),
m_accounting_Record_Number( // containing an Accounting-Record-Number AVP
3 // indicating the value 3
),
m_event_timestamp(1),
m_Service_Information_RF_CDF_TC
)
)
);
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
),
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
EVENT_RECORD_E
),
mw_accounting_Record_Number( // containing an Acct-Application-Id AVP
3 // indicating the value 3
)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RF_CDF_EC_01
/**
* @desc Verify that the IUT can successfully process Duplicate Detection AC-Request [Interim] where Session Based Charging is used
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RF_CDF_EC_02() runs on DiameterRfRo {
// Local variables
var float v_interimTimer:=0.0;
var template ACR_MSG vt_aCR_T_flag;
// Preamble
f_preamble_Rf_CTF();
f_sendACR_awaitACA_(START_RECORD_E,3,1);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_ACR(
md_aCR_TflagSet(
vc_sessionId,
md_acrBodyAvps_TypeOfCharging(
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
),
m_accounting_Record_Number( // containing an Accounting-Record-Number AVP
3 // indicating the value 3
),
m_event_timestamp(1),
m_Service_Information_RF_CDF_TC
))
);
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
),
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
INTERIM_RECORD_E
),
mw_accounting_Record_Number( // containing an Acct-Application-Id AVP
3 // indicating the value 3
)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendACR_awaitACA_(STOP_RECORD_E,3,1);
f_postamble_Rf_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RF_CDF_EC_02
} // End of group ErrorCasses
} // End of group TP_RF_CDF_Role
// 5.2.2.2. CTF Role
group TP_RF_CTF_Role {
// 5.2.2.2.2 Message Syntax
group TP_RF_CTF_MS {
/**
* @desc Verify that the IUT can send an AC-Request to indicate a Charging Data Transfer.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_MS_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBodyAvps(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
?
),
mw_accounting_Record_Number( // containing an Accounting-Record-Number AVP
? // indicating the value ?
)
)
)
);
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
vc_recvDiamMsg.aCR_MSG.aCR_Body.accounting_Record_Type.aVP_Data
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_MS_01
/**
* @desc Verify that the IUT can send an AC-Request with correct Diameter-Header parameters to indicate a Charging Data Transfer with valid Diameter-Header parameters.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_MS_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_ACR(
mw_ACR_CmdFlags_PET(mw_diameterHeaderReq_CmdFlags(ACR_E, ?, mw_cmdFlagsReq_PET(?,'0'B,'0'B)))
);
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
vc_recvDiamMsg.aCR_MSG.aCR_Body.accounting_Record_Type.aVP_Data
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_MS_02
} // End of group TP_RF_CTF_MS_Role
// 5.2.2.2.3 Type of Charging
group TP_RF_CTF_TC {
/**
* @desc Verify that the IUT can successfully process an AC-Request [Event].
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_TC_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
EVENT_RECORD_E
),
mw_accounting_Record_Number( // containing an Accounting-Record-Number AVP
? // indicating the value ?
),
mw_service_Information( // containing a Service-Information AVP
?, // containing a Subscription-Id AVP
(mw_ims_Information ifpresent), // containing a IMS-Information AVP
(mw_service_Generic_Information ifpresent) // containing a Service-Generic-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
EVENT_RECORD_E
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_TC_01
/**
* @desc Verify that the IUT can successfully process an AC-Request [Start].
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_TC_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
START_RECORD_E
),
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
START_RECORD_E
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_awaitACR_sendACA_(STOP_RECORD_E);
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_TC_02
/**
* @desc Verify that the time between several AC-Requests [Interim]
* received by the IUT is at least equal to the desired intermediate
* charging interval.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_TC_03() runs on DiameterRfRo {
// Local variables
var default v_def_diameter_catchInterim;
// Preamble
f_preamble_Rf_CDF();
// Defaults
v_def_diameter_catchInterim := activate (a_diameter_interim());
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
START_RECORD_E
),
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_acaBody_AcctInterimInterval(
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
START_RECORD_E
),
vc_accountingRecordNumber,
m_acct_Interim_Interval(2)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitACR_sendACA_(STOP_RECORD_E);
deactivate (v_def_diameter_catchInterim);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_TC_03
/**
* @desc Verify that the IUT can successfully process an AC-Request [Interim].
* charging interval.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_TC_04() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
START_RECORD_E
),
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
START_RECORD_E
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
INTERIM_RECORD_E
),
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
INTERIM_RECORD_E
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_awaitACR_sendACA_(STOP_RECORD_E);
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_TC_04
/**
* @desc Verify that the IUT can successfully process an AC-Request [Stop].
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_TC_05() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitACR_sendACA_(START_RECORD_E);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
STOP_RECORD_E
),
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
STOP_RECORD_E
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_TC_05
} // End of group TP_RF_CTF_TC_Role
// 5.2.2.2.4 Error cases
group TP_RF_CTF_EC {
/**
* @desc Verify that the IUT sends periodically Device-Watchdog-Request messages to the CDF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_EC_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
START_RECORD_E
),
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
START_RECORD_E
),
vc_accountingRecordNumber
))
);
f_awaiting_DWR(mw_DWR_dummy);
f_send_DWA(m_DWA_basic(vc_originHost, vc_originRealm));
f_awaiting_DWR(mw_DWR_dummy);
log("Periodical DW-Request received.");
f_send_DWA(m_DWA_basic(vc_originHost, vc_originRealm));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_EC_01
/**
* @desc Verify that on connection failure with the primary CDF,
* the IUT sends an AC-Request [Interim] to the secondary CDF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_EC_02(DiameterRfRo p_diameterComponent_cdf) runs on DiameterRfRo {
// Local variables
var DIAMETER_MSG v_MSG;
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
START_RECORD_E
),
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_acaBody_AcctInterimInterval(
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
START_RECORD_E
),
vc_accountingRecordNumber,
m_acct_Interim_Interval(2)
))
);
unmap(p_diameterComponent_cdf:DIAMP, system:CDF_Rf);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
map(p_diameterComponent_cdf:DIAMP, system:CDF_Rf);
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_EC_02
/**
* @desc Verify that on connection failure with the primary CDF,
* the IUT sends an AC-Request [Interim] to the secondary CDF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_EC_02_2ndCDF() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CDF2();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
INTERIM_RECORD_E
),
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
INTERIM_RECORD_E
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF2();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_EC_02_2ndCDF
/**
* @desc Verify that on connection restored, the IUT sends an AC-Request [Interim]
* to the primary CDF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_EC_03(DiameterRfRo p_diameterComponent_cdf) runs on DiameterRfRo {
// Local variables
var DIAMETER_MSG v_MSG;
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
START_RECORD_E
),
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_acaBody_AcctInterimInterval(
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
START_RECORD_E
),
vc_accountingRecordNumber,
m_acct_Interim_Interval(2)
))
);
unmap(p_diameterComponent_cdf:DIAMP, system:CDF_Rf);// Diameter Init test Configuration
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
log("ACA message was not send out from primary CDF.");
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
map(p_diameterComponent_cdf:DIAMP, system:CDF_Rf);// Diameter Init test Configuration
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
INTERIM_RECORD_E
),
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
INTERIM_RECORD_E
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_EC_03
/**
* @desc Verify that on connection restored, the IUT sends an
* AC-Request [Interim] to the primary CDF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_EC_03_2ndCDF() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CDF2();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
INTERIM_RECORD_E
),
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
INTERIM_RECORD_E
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF2();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_EC_03_2ndCDF
/**
* @desc Verify that on communication failure, the IUT stores generated accounting
* data in a non-volatile memory and, on communication restored, sends them
* to the CDF, in the order they were stored in the buffer.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_EC_04(DiameterRfRo p_diameterComponent_cdf) runs on DiameterRfRo {
// Local variables
var DIAMETER_MSG v_MSG;
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
START_RECORD_E
),
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_acaBody_AcctInterimInterval(
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
START_RECORD_E
),
vc_accountingRecordNumber,
m_acct_Interim_Interval(2)
))
);
unmap(p_diameterComponent_cdf:DIAMP, system:CDF_Rf);// Diameter Init test Configuration
f_wait(3.0);
map(p_diameterComponent_cdf:DIAMP, system:CDF_Rf);// Diameter Init test Configuration
log("ACA message was not send out from primary CDF.");
action("After Communication restored CDF sends ACR again.");
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
INTERIM_RECORD_E
),
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
INTERIM_RECORD_E
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_EC_04
/**
* @desc Verify that the IUT retransmits an unacknowladged AC-Request [Interim] (T-flag).
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_EC_05() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
START_RECORD_E
),
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_acaBody_AcctInterimInterval(
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
START_RECORD_E
),
vc_accountingRecordNumber,
m_acct_Interim_Interval(2)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
INTERIM_RECORD_E
),
mw_accounting_Record_Number( // containing an Accounting-Record-Number AVP
? // indicating the value ?
),
?, // containing a Service-Information AVP
? // containing an Event-Timestamp AVP
)
)
);
log("No ACA send and await of new ACR with T-bit flag set.");
f_awaiting_ACR(
mdw_aCR_Header_ACRBody(
mw_diameterHeaderReq_CmdFlags(ACR_E, ?, mw_cmdFlagsReq_PET(?,'0'B,'1'B)),
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
INTERIM_RECORD_E
),
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
INTERIM_RECORD_E
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_EC_05
/**
* @desc Verify that on reaching the maximum of retransmissions of unacknowladged
* AC-Requests [Interim] (T-flag), the IUT executes the CDF connection failure procedure.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_CTF_EC_06(DiameterRfRo p_diameterComponent_cdf) runs on DiameterRfRo {
// Local variables
var DIAMETER_MSG v_MSG;
// Preamble
f_preamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
START_RECORD_E
),
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_acaBody_AcctInterimInterval(
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
START_RECORD_E
),
vc_accountingRecordNumber,
m_acct_Interim_Interval(2)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
unmap(p_diameterComponent_cdf:DIAMP, system:CDF_Rf);// Diameter Init test Configuration
f_wait(3.0);
map(p_diameterComponent_cdf:DIAMP, system:CDF_Rf);// Diameter Init test Configuration
action("After Communication restored CDF sends ACR again.");
f_awaiting_ACR(
mdw_aCR(
?,
mdw_acrBody_ServiceInfo_EventTimestamp(
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_accounting_Record_Type( // containing an Accounting-Record-Type AVP
INTERIM_RECORD_E
),
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
INTERIM_RECORD_E
),
vc_accountingRecordNumber
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Rf_CDF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_CTF_EC_06
} // End of group TP_RF_CTF_EC_Role {
} // End of group TP_RF_CTF_Role
} // End of group TP_RF_Role
group TP_RO_Role {
//5.2.3.1. OCF Role
group TP_RO_OCF_Role {
// 5.2.3.1.2 Message Syntax
group TP_RO_OCF_MS {
/**
* @desc Verify that the IUT can successfully process all mandatory AVPs in a CC-Request received due to Charging Data Transfer.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_MS_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId, // containing a Session-ID AVP
md_ccrBodyAvps_TypeOfCharging(
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
vc_destinationRealm, // containing a Destination-Realm AVP
m_cC_Request_Type_dummy, // containing a CC-Request-Type AVP
m_cC_Request_Number(0), // containing a CC-Request-Number AVP
m_service_Context_Id( // containing a Service-Context-Id AVP
PX_SERVICE_CONTEXT_ID
)
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId, // containing a Session-ID AVP
mdw_ccaBodyAvps(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT, // containing an Origin-Host AVP
vc_originRealm_IUT, // containing an Origin-Realm AVP
mw_auth_Application_Id(
4
),
mw_cC_Request_Type, // containing a CC-Request-Type AVP
mw_cC_Request_Number // containing a CC-Request-Number AVP
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_MS_01
/**
* @desc Verify that the IUT can successfully process all mandatory AVPs in a CC-Request received due to Charging Data Transfer.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_MS_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId, // containing a Session-ID AVP
md_ccrBodyAvps_TypeOfCharging(
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
vc_destinationRealm, // containing a Destination-Realm AVP
m_cC_Request_Type_dummy, // containing a CC-Request-Type AVP
m_cC_Request_Number(0), // containing a CC-Request-Number AVP
m_service_Context_Id( // containing a Service-Context-Id AVP
PX_SERVICE_CONTEXT_ID
)
)
)
);
f_awaiting_CCA(
mw_CCA_CmdFlags_PET(
mw_diameterHeaderAns_CmdFlags( // containing a Version
// indicating value ‘1’
CCA_E,
?,
mw_cmdFlagsAns_PET(
'0'B,
'0'B,
'0'B // containing T bit
// indicating value ‘0’
// containing r bits
// indicating value '0000'B
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_MS_02
} // End of group TP_RO_OCF_MS
// 5.2.3.1.3 Type of Charging
group TP_RO_OCF_TC {
/**
* @desc Verify that the IUT can successfully process a CC-Request [Event] with direct debiting due to Immediate Event Charging
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_TC_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
m_cC_Request_Number(0),
-,
m_requested_Action( // containing a Requested-Action AVP
DIRECT_DEBITING_E // indicating DIRECT_DEBITING
),
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // (containing a Requested-Service-Unit AVP and/or
m_cC_Time(PX_CC_TIME_VALUE)
),
-,
{m_service_Identifier( // containing a Service-Identifier AVP)
0
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Time( // containing a Granted-Service-Unit AVP
mw_cC_Time // indicating debites units
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_TC_01
/**
* @desc Verify that the IUT can successfully process a CC-Request [Event] with price enquiry due to Immediate Event Charging
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_TC_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
m_cC_Request_Number(0),
-,
m_requested_Action( // containing a Requested-Action AVP
PRICE_ENQUIRY_E // indicating PRICE_ENQUIRY
),
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
-,
-,
{m_service_Identifier( // containing a Service-Identifier AVP
0
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_cost_Information(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
mw_cC_Request_Number,
mw_cost_Information( // containing a Cost-Information AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_TC_02
/**
* @desc Verify that the IUT can successfully process a CC-Request [Event] with check balance due to Immediate Event Charging
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_TC_03() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
m_cC_Request_Number(0),
-,
m_requested_Action( // containing a Requested-Action AVP
CHECK_BALANCE_E // indicating CHECK BALANCE
)
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_remaining_Balance(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
mw_cC_Request_Number,
mw_remaining_Balance( // containing a Remaining-Balance AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_TC_03
/**
* @desc Verify that the IUT can successfully process a CC-Request [Event] with refund account due to Immediate Event Charging
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_TC_04() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Event] direct debeting action are exchanged
f_sendCCR_awaitCCA_(
EVENT_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
m_requested_Action(DIRECT_DEBITING_E)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
md_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
m_requested_Action( // containing a Requested-Action AVP
REFUND_ACCOUNT_E // indicating REFUND ACCOUNT
),
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Money( // (containing a Requested-Service-Unit AVP and/or
m_cC_Money(
m_unit_Value(
m_value_Digits(32)
)
)
),
-,
{m_service_Identifier( // containing a Service-Identifier AVP)
0
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Money( // containing a Granted-Service-Unit AVP
mw_cC_Money // indicating refunded units
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_TC_04
/**
* @desc Verify that the IUT can successfully process a CC-Request [Initial] to reserve units due to Event Charging with Unit Reservation
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_TC_05() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
-,
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // containing a Requested-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE)
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Time( // containing a Granted-Service-Unit AVP
mw_cC_Time // indicating reserved units
)
),
mw_cost_Information ( // optionally containing a Cost-Information AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
),
mw_remaining_Balance( // optionally containing a Remaining-Balance AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_TC_05
/**
* @desc Verify that the IUT can successfully process a CC-Request [Termination] to debit units due to Event Charging with Unit Reservation
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_TC_06() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Initial] are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
TERMINATION_REQUEST_E // indicating TERMINATION_REQUEST
),
m_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
-,
{m_used_Service_Unit_cC_Time( // containing a Used-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE_USED)
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
TERMINATION_REQUEST_E // indicating TERMINATION_REQUEST
),
mw_cC_Request_Number,
-,
mw_cost_Information( // optionally containing a Cost-Information AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
),
mw_remaining_Balance( // optionally containing a Remaining-Balance AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_TC_06
/**
* @desc Verify that the IUT can successfully process a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_TC_07() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // containing a Requested-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE)
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Time( // containing a Granted-Service-Unit AVP
mw_cC_Time // indicating reserved units
)
),
mw_cost_Information( // optionally containing a Cost-Information AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
),
mw_remaining_Balance( // optionally containing a Remaining-Balance AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
1,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_TC_07
/**
* @desc Verify that the IUT can successfully process a CC-Request [Update] to reserve units and debit units due to Session Charging with Unit Reservation
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_TC_08() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Initial] are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
m_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
-,
{m_used_Service_Unit_cC_Time( // containing a Used-Service-Unit AVP
m_cC_Time(10)
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Time( // containing a Granted-Service-Unit AVP
mw_cC_Time // indicating reserved units
)
),
mw_cost_Information( // optionally containing a Cost-Information AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
),
mw_remaining_Balance( // optionally containing a Remaining-Balance AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_TC_08
/**
* @desc Verify that the IUT can successfully process a CC-Request [Termination] to debit units due to Session Charging with Unit Reservation
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_TC_09() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Initial] and CCR,CCA [Update] are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_sendCCR_awaitCCA_(
UPDATE_REQUEST_E,
1,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
TERMINATION_REQUEST_E // indicating TERMINATION_REQUEST
),
m_cC_Request_Number(2),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
-,
{m_used_Service_Unit_cC_Time( // containing a Used-Service-Unit AVP
m_cC_Time(10)
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
TERMINATION_REQUEST_E // indicating TERMINATION_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Time( // containing a Granted-Service-Unit AVP
mw_cC_Time // indicating reserved units
)
),
mw_cost_Information( // optionally containing a Cost-Information AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
),
mw_remaining_Balance( // optionally containing a Remaining-Balance AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_TC_09
} // End of group TP_RO_OCF_TC
// 5.2.3.1.4 Error Casses
group TP_RO_OCF_EC {
/**
* @desc Verify that the IUT can successfully process Duplicate Detection due to Immediate Event Charging with Direct Debiting
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_EC_RO_OCF_EC_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR_CmdFlags_T(
m_diameterHeaderReq_CmdFlags_T(CCR_E, c_applIdRo),
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
m_cC_Request_Number(0),
-,
m_requested_Action( // containing a Requested-Action AVP
DIRECT_DEBITING_E // indicating DIRECT_DEBITING
),
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // (containing a Requested-Service-Unit AVP and/or
m_cC_Time(PX_CC_TIME_VALUE)
),
-,
{m_service_Identifier( // containing a Service-Identifier AVP)
0
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Time( // containing a Granted-Service-Unit AVP
mw_cC_Time // indicating debites units
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_EC_RO_OCF_EC_01
/**
* @desc Verify that the IUT can successfully process Duplicate Detection due to Event Charging with Unit Reservation
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_EC_RO_OCF_EC_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR_CmdFlags_T(
m_diameterHeaderReq_CmdFlags_T(CCR_E, c_applIdRo),
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
-,
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // containing a Requested-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE)
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Time( // containing a Granted-Service-Unit AVP
mw_cC_Time // indicating reserved units
)
),
mw_cost_Information( // optionally containing a Cost-Information AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
),
mw_remaining_Balance( // optionally containing a Remaining-Balance AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
1
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_EC_RO_OCF_EC_02
/**
* @desc Verify that the IUT can successfully process Duplicate Detection due to Event Charging with Unit Reservation
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_EC_RO_OCF_EC_03() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
// Preamble action: CCR,CCA [Initial] are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_send_CCR(
md_cCR_CmdFlags_T(
m_diameterHeaderReq_CmdFlags_T(CCR_E, c_applIdRo),
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
TERMINATION_REQUEST_E // indicating TERMINATION_REQUEST
),
m_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // containing a Requested-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE)
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
TERMINATION_REQUEST_E // indicating TERMINATION_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Time( // containing a Granted-Service-Unit AVP
mw_cC_Time // indicating reserved units
)
),
mw_cost_Information( // optionally containing a Cost-Information AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
),
mw_remaining_Balance( // optionally containing a Remaining-Balance AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_EC_RO_OCF_EC_03
/**
* @desc Verify that the IUT can successfully process Duplicate Detection due to Event Charging with Unit Reservation
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_EC_RO_OCF_EC_04() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
// Preamble action: CCR,CCA [Initial] are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_send_CCR(
md_cCR_CmdFlags_T(
m_diameterHeaderReq_CmdFlags_T(CCR_E, c_applIdRo),
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
m_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
-,
{m_used_Service_Unit_cC_Time( // containing a Used-Service-Unit AVP
m_cC_Time(10)
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST_E
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Time( // containing a Granted-Service-Unit AVP
mw_cC_Time // indicating reserved units
)
),
mw_cost_Information( // optionally containing a Cost-Information AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
),
mw_remaining_Balance( // optionally containing a Remaining-Balance AVP
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
),
mw_currency_Code // containing a Currency-Code AVP
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_EC_RO_OCF_EC_04
} // End of group TP_RO_OCF_EC
// 5.2.3.1.5 Tariff Changes
group TP_RO_OCF_CH {
/**
* @desc Verify that the IUT supports Tariff-Change-Usage AVP and,
* that the IUT can successfully process a CC-Request [Event] to perform tariff switch due to Immediate Event Charging and,
* then responds with a CC-Answer with relavant Result-Code AVP and Tariff-Time-Change AVP
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_CH_RO_OCF_CH_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TariffChangesUsage(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
m_cC_Request_Number(0),
-,
m_requested_Action( // containing a Requested-Action AVP
CHECK_BALANCE_E // indicating CHECK BALANCE
),
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
-,
{m_used_Service_Unit_tariff_Changes( // containing a Tariff-Change-Usage AVP
m_tariff_Change_Usage(
UNIT_BEFORE_TARIFF_CHANGE_E // indicating UNIT_BEFORE_TARIFF_CHANGE
)
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
-,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Tariff_Time_Change(
// containing a Granted-Service-Unit AVP
mw_tariff_Time_Change // containing a Tariff-Time-Change AVP
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_CH_RO_OCF_CH_01
/**
* @desc Verify that the IUT supports Tariff-Change-Usage AVP and that the IUT can successfully process a CC-Request [Event] to perform tariff switch due to Immediate Event Charging and,
* then responds with a CC-Answer with relavant Result-Code AVP and Tariff-Time-Change AVP
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_CH_RO_OCF_CH_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TariffChangesUsage(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
-,
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // containing a Requested-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE)
),
{m_used_Service_Unit_tariff_Changes( // containing a Tariff-Change-Usage AVP
m_tariff_Change_Usage(
UNIT_BEFORE_TARIFF_CHANGE_E // indicating UNIT_BEFORE_TARIFF_CHANGE
)
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
-,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Tariff_Time_Change(
// containing a Granted-Service-Unit AVP
mw_tariff_Time_Change // containing a Tariff-Time-Change AVP
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
1
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_CH_RO_OCF_CH_02
/**
* @desc Verify that the IUT supports Tariff-Change-Usage AVP and that the IUT can successfully process a CC-Request [Event] to perform tariff switch due to Immediate Event Charging and then responds with a CC-Answer with relavant Result-Code AVP and Tariff-Time-Change AVP
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_CH_RO_OCF_CH_03() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TariffChangesUsage(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
-,
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // containing a Requested-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE)
),
{m_used_Service_Unit_tariff_Changes( // containing a Tariff-Change-Usage AVP
m_tariff_Change_Usage(
UNIT_BEFORE_TARIFF_CHANGE_E // indicating UNIT_BEFORE_TARIFF_CHANGE
)
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
-,
mdw_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Tariff_Time_Change(
// containing a Granted-Service-Unit AVP
mw_tariff_Time_Change // containing a Tariff-Time-Change AVP
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
1
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_CH_RO_OCF_CH_03
} // End of group TP_RO_OCF_CH
// 5.2.3.1.6 Re-Authorization
group TP_RO_OCF_RE {
/**
* @desc Verify that the IUT re-authorizes multiple active quotas during Session Charging with Unit Reservation.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_RE_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Event] direct debeting action are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_sendCCR_awaitCCA_(
UPDATE_REQUEST_E,
1,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
action("Indicate need for re-authorization"); // FIXME How to do it
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
//await RAR and send RAA messages
f_awaitRAR_sendRAA_();
action("The IUT accepts the message");
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_RE_01
} // End of group TP_RO_OCF_RE
// 5.2.3.1.7 Failure Handling
group TP_RO_OCF_FH {
/**
* @desc Verify that the IUT can successfully transmit Credit-Control-Failure-Handling AVP (CCFH) with price enquiry
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_FH_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
m_cC_Request_Number(0),
-,
m_requested_Action( // containing a Requested-Action AVP
PRICE_ENQUIRY_E // indicating PRICE_ENQUIRY
),
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
-,
-,
{m_service_Identifier( // containing a Service-Identifier AVP
0
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_failure_handling_ccfh(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
mw_cC_Request_Number,
mw_credit_Control_Failure_Handling( // containing a Credit-Control-Failure-Handling AVP
RETRY_AND_TERMINATE_E // indicating what to do if the IUT has been temporarily prevented
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_FH_01
/**
* @desc Verify that the IUT can successfully transmit Credit-Control-Failure-Handling AVP (CCFH) with price enquiry
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_FH_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
m_cC_Request_Number(0),
-,
m_requested_Action( // containing a Requested-Action AVP
DIRECT_DEBITING_E // indicating DIRECT_DEBITING
),
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // (containing a Requested-Service-Unit AVP and/or
m_cC_Time(PX_CC_TIME_VALUE)
),
-,
{m_service_Identifier( // containing a Service-Identifier AVP)
0
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_failure_handling_ddfh(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
mw_cC_Request_Number,
mw_direct_Debiting_Failure_Handling( // containing a Direct-Debiting-Failure-Handling AVP
TERMINATE_OR_BUFFER_E // indicating TERMINATE_OR_BUFFER
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_FH_02
/**
* @desc Verify that the IUT can successfully transmit Direct-Debiting-Failure-Handling AVP (DDFH) with direct debiting
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_FH_03() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
m_cC_Request_Number(0),
-,
m_requested_Action( // containing a Requested-Action AVP
DIRECT_DEBITING_E // indicating DIRECT_DEBITING
),
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // (containing a Requested-Service-Unit AVP and/or
m_cC_Time(PX_CC_TIME_VALUE)
),
-,
{m_service_Identifier( // containing a Service-Identifier AVP)
0
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_failure_handling_ddfh(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
mw_cC_Request_Number,
mw_direct_Debiting_Failure_Handling( // containing a Direct-Debiting-Failure-Handling AVP
CONTINUE_E // indicating CONTINUE
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_FH_03
} // End of group TP_RO_OCF_FH
// 5.2.3.1.8 Failover
group TP_RO_OCF_FA {
/**
* @desc Verify that the IUT can successfully transmit CC-Session-Failover AVP
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_FA_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
-,
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // containing a Requested-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE)
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_failure_handling_ccsf(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mw_cC_Session_Failover( // containing a CC-Session-Failover AVP
FAILOVER_SUPPORTED_E // indicating FAILOVER_SUPPORTED
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
1
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_FA_01
/**
* @desc Verify that the IUT can successfully transmit CC-Session-Failover AVP
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_FA_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
-,
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // (containing a Requested-Service-Unit AVP and/or
m_cC_Time(PX_CC_TIME_VALUE)
),
-,
{m_service_Identifier( // containing a Service-Identifier AVP)
0
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_failure_handling_ccsf(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mw_cC_Session_Failover( // containing a CC-Session-Failover AVP
FAILOVER_NOT_SUPPORTED_E // indicating FAILOVER_NOT_SUPPORTED
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
1
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_FA_02
} // End of group TP_RO_OCF_FA
// 5.2.3.1.9 Credit Pooling
group TP_RO_OCF_CP {
/**
* @desc Verify that the IUT can successfully process a CC-Request [Initial] to perform credit pooling due to Event Charging with Unit Reservation and then responds with a CC-Answer with related AVPs
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_CP_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
-,
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time(
m_cC_Time(PX_CC_TIME_VALUE)
)
)},
m_multiple_Services_Indicator(
MULTIPLE_SERVICES_SUPPORTED_E // indicating MULTIPLE_SERVICES_SUPPORTED
)
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_Pool_Reference(
// containing a Multiple-Services-Credit-Control AVP
mw_g_S_U_Pool_Reference( // containing a G-S-U-.Pool-Reference AVP
mw_g_S_U_Pool_Identifier( // containing a G-S-U-.Pool-Identifier AVP
0
),
mw_cC_Unit_Type( // containing a CC-Unit-Type AVP
TIME_E
),
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
)
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
1
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_CP_01
/**
* @desc Verify that the IUT supports credit pooling and it can successfully process a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_CP_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
-,
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time(
m_cC_Time(PX_CC_TIME_VALUE)
)
)},
m_multiple_Services_Indicator(
MULTIPLE_SERVICES_SUPPORTED_E // indicating MULTIPLE_SERVICES_SUPPORTED
)
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_Pool_Reference(
// containing a Multiple-Services-Credit-Control AVP
mw_g_S_U_Pool_Reference( // containing a G-S-U-.Pool-Reference AVP
mw_g_S_U_Pool_Identifier( // containing a G-S-U-.Pool-Identifier AVP
0
),
mw_cC_Unit_Type( // containing a CC-Unit-Type AVP
TIME_E
),
mw_unit_Value( // containing a Unit-Value AVP
mw_value_Digits // containing a Value-Digits AVP
)
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
1
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_CP_02
} // End of group TP_RO_OCF_CP
// 5.2.3.1.10 Other Procedures
group TP_RO_OCF_OP {
/**
* @desc Verify that the IUT can specify an idle timeout associated with a granted quota
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
-,
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // containing a Requested-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE)
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_quota_holdling(
// containing a Multiple-Services-Credit-Control AVP
mw_quota_Holding_Time( // containing a Quota-Holding-Time AVP
complement(0) // indicating a non 0 value
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
1
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_01
/**
* @desc Verify that the IUT can successfully process a CC-Answer [Update] including various Trigger-Type AVPs and generate a credit re-authorization
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Event] direct debeting action are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
md_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_Trigger_reportingReason(
// containing a Multiple-Services-Credit-Control AVP
mw_trigger( // containing a Trigger AVP
mw_trigger_Type( // containing a Trigger-Type AVP
PX_TRIGGER_TYPE // indicating one of the possible values (7.2.235/236)
)
)
)
)
)
);
//await RAR and send RAA messages
f_awaitRAR_sendRAA_();
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_02
/**
* @desc Verify that the IUT can successfully reset triggers which were already set
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_03() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Event] direct debeting action are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
md_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_Trigger_reportingReason(
// containing a Multiple-Services-Credit-Control AVP
mw_reseted_trigger // containing a Trigger AVP
// not containing a Trigger-Type AVP
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_03
/**
* @desc Verify that the IUT can successfully indicate the remaining quota threshold by sending a CC-Answer with Time-Quota-Threshold AVP and trigger quota re-authorization
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_04() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Event] direct debeting action are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
md_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // containing a Requested-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE)
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit_Time_Quota_Threshold(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Time( // containing a Granted-Service-Unit AVP
mw_cC_Time // containing a CC-Time AVP
),
mw_time_Quota_Threshold // containing a Time-Quota-Threshold AVP
)
)
)
);
//await RAR and send RAA messages
f_awaitRAR_sendRAA_();
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_04
/**
* @desc Verify that the IUT can successfully indicate the remaining quota threshold by sending a CC-Answer with Volume-Quota-Threshold AVP and trigger quota re-authorization
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_05() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Event] direct debeting action are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
md_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Total_Octets(
// containing a Requested-Service-Unit AVP
m_cC_Total_Octets(32)
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit_Volume_Quota_Threshold(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Volume( // containing a Granted-Service-Unit AVP
(?,*,*), // containing a CC-Total-Octets AVP or
(*,?,*), // containing a CC-Input-Octets AVP or
(*,*,?) // containing a CC-Output-Octets AVP
),
mw_volume_Quota_Threshold // containing a Volume-Quota-Threshold AVP
)
)
)
);
//await RAR and send RAA messages
f_awaitRAR_sendRAA_();
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_05
/**
* @desc Verify that the IUT can successfully indicate the remaining quota threshold by sending a CC-Answer with Unit-Quota-Threshold AVP and trigger quota re-authorization
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_06() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Event] direct debeting action are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
md_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Service_Specific_Units(
// containing a Requested-Service-Unit AVP
m_cC_Service_Specific_Units(32)
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit_Unit_Quota_Threshold(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Service_Specific_Units(
// containing a Granted-Service-Unit AVP
mw_cC_Service_Specific_Units // containing a CC-Service-Specific-Units AVP
),
mw_unit_Quota_Threshold // containing a Unit-Quota-Threshold AVP
)
)
)
);
//await RAR and send RAA messages
f_awaitRAR_sendRAA_();
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_06
/**
* @desc Verify that the IUT can process termination action
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_07() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Event] direct debeting action are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_sendCCR_awaitCCA_( // the IUT has consumed Granted credits
UPDATE_REQUEST_E,
3,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
m_requested_Action(
DIRECT_DEBITING_E
),
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // containing a Requested-Service-Unit AVP
m_cC_Time(32000)
),
{m_used_Service_Unit_cC_Time( // containing a Used-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE)
)}
)}
);
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
md_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_Final_Unit_Indication(
// containing a Multiple-Services-Credit-Control AVP
mw_final_Unit_Indication( // containing a Final-Unit-Indication AVP
mw_final_Unit_Action( // containing a Final-Unit-Action AVP
TERMINATE_E // indicating TERMINATE
)
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_07
/**
* @desc Verify that, IUT can process redirection action
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_08() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Event] direct debeting action are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_sendCCR_awaitCCA_( // the IUT has consumed Granted credits
UPDATE_REQUEST_E,
1,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Time( // containing a Requested-Service-Unit AVP
m_cC_Time(10 * PX_CC_TIME_VALUE)
),
{m_used_Service_Unit_cC_Time( // containing a Used-Service-Unit AVP
m_cC_Time(PX_CC_TIME_VALUE)
)}
)}
);
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
md_cC_Request_Number(2),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_Final_Unit_Indication(
// containing a Multiple-Services-Credit-Control AVP
mw_final_Unit_Indication( // containing a Final-Unit-Indication AVP
mw_final_Unit_Action( // containing a Final-Unit-Action AVP
REDIRECT_E // indicating REDIRECT
),
mw_redirect_Server( // containing Redirect-Server AVP
mw_redirect_Address_Type( // containing Redirect-Address-Type AVP
IPV4_ADDRESS_E
),
mw_redirect_Server_Address( // containing Redirect-Server-Address AVP
PX_REDIRECT_SERVER_ADDRESS
)
)
// optionally containing Restriction-Filter-Rule AVP
// optionally containing Filter-Id AVP AVP
// See templates mw_final_Unit_Indication_Restriction_Filter_Rule_AVP & mw_final_Unit_Indication_Filter_Id_AVP
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
3
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_08
/**
* @desc Verify that, IUT can process quota consumption time
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_09() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
-,
-,
{m_multiple_Services_Credit_Control(
m_requested_Service_Unit_cC_Time(
m_cC_Time(PX_CC_TIME_VALUE)
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_granted_Service_Unit_Quota_Consumption_Time(
// containing a Multiple-Services-Credit-Control AVP
mdw_granted_Service_Unit_Time( // containing a Granted-Service-Unit AVP
mw_cC_Time // containing a CC-Time AVP
),
mw_quota_Consumption_Time( // containing a Quota-Consumption-Time AVP
? // indicating a period equal to the Quota Consumption Time
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
1
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_09
/**
* @desc Verify that the IUT can successfully terminate sessions on CCR,CCA [Update] exchange
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_10() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Initial] direct debeting action are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
m_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
-,
{m_used_Service_Unit_cC_Time( // containing a Used-Service-Unit AVP
m_cC_Time(4 * PX_CC_TIME_VALUE_USED)
)}
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_AUTHORIZATION_REJECTED_E // indicating DIAMETER-AUTHORIZATION-REJECTED
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
mw_cC_Request_Number
)
)
);
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_10
/**
* @desc Verify that the IUT can successfully terminate sessions with ASR,ASA exchange
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_11() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
// Preamble action: CCR,CCA [Initial] and CCR,CCA [Update] are exchanged
f_sendCCR_awaitCCA_(
INITIAL_REQUEST_E,
0,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_sendCCR_awaitCCA_(
UPDATE_REQUEST_E,
1,
m_service_Context_Id(PX_SERVICE_CONTEXT_ID)
);
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
// FIXME How to implement on service termination request ?
f_awaiting_ASR( // the IUT sends an AS-Request
mdw_aSR(
vc_sessionId, // containing a Session-ID AVP
mdw_asrBodyAvps(
vc_originHost_IUT, // containing an Origin-Host AVP
vc_originRealm_IUT, // containing an Origin-Realm AVP
vc_destinationRealm_IUT, // containing a Destination-Realm AVP
vc_destinationHost_IUT // containing a Destination-Host AVP
// containing an Auth-Application-Id AVP
)
)
);
f_send_ASA( // the IUT receives an AS-Answer
md_aSA(
vc_sessionId, // containing a Session-ID AVP
md_asaBodyAvps(
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
)
)
);
f_send_CCR( // the IUT receives an CC-Request
md_cCR(
vc_sessionId, // containing a Session-ID AVP
md_ccrBodyAvps_TypeOfCharging(
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
vc_destinationRealm, // containing a Destination-Realm AVP
md_cC_Request_Type( // containing a CC-Request-Type AVP
TERMINATION_REQUEST_E // indicating TERMINATION_REQUEST
),
md_cC_Request_Number(2), // containing a CC-Request-Number AVP
m_service_Context_Id( // containing a Service-Context-Id AVP
PX_SERVICE_CONTEXT_ID
)
)
)
);
f_awaiting_CCA( // the IUT sends an CC-Answer
mdw_cCA(
vc_sessionId, // containing a Session-ID AVP
mdw_ccaBodyAvps(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_AUTHORIZATION_REJECTED_E
// indicating DIAMETER-AUTHORIZATION-REJECTED
),
-,
-,
-,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
TERMINATION_REQUEST_E // indicating TERMINATION_REQUEST
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_11
/**
* @desc Verify that the IUT can successfully process Envelope AVP
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_12() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR( // the IUT receives a CC-Request
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Total_Octets(
// containing a Requested-Service-Unit AVP
m_cC_Total_Octets(32) // FIXME How to trigger Envelope-Reporting AVP/Volume
)
)}
)
)
);
f_awaiting_CCA( // the IUT sends a CC-Answer
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER-SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_Envelope_Reporting(
// containing a Multiple-Services-Credit-Control AVP
mw_envelope_Reporting( // containing an Envelope-Reporting AVP
REPORT_ENVELOPES_WITH_VOLUME_E // indicating REPORT_ENVELOPES_WITH_VOLUME
)
)
)
)
);
f_send_CCR( // the IUT receives a CC-Request
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
m_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{md_multiple_Services_Credit_Control_granted_Service_Unit_Envelope(
// containing a Multiple-Services-Credit-Control AVP
m_granted_Service_Unit_Volume( // containing a Granted-Service-Unit AVP
m_cC_Total_Octets(32) // indicating reserved units
),
m_envelope( // containing an Envelope AVP
m_envelope_Start_Time( // containing an Envelope-Start-Time AVP
0 // FIXME Set start time value? Need an external function?
),
-, // optionally containing an Envelope-Stop-Time AVP
m_cC_Total_Octets(32), // containing a CC-Total-Octets AVP
m_cC_Input_Octets(16), // containing a CC-Input-Octets AVP
m_cC_Output_Octets(16) // containing a CC-Output-Octets AVP
// optionally containing a CC-Service-Specific-Units AVP
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER-SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_12
/**
* @desc Verify that the IUT can successfully process combinational quota
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_13() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR( // the IUT receives a CC-Request
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{m_multiple_Services_Credit_Control( // containing a Multiple-Services-Credit-Control AVP
m_requested_Service_Unit_cC_Total_Octets(
// containing a Requested-Service-Unit AVP
m_cC_Total_Octets(32) // FIXME How to trigger Envelope-Reporting AVP/Volume
)
)}
)
)
);
f_awaiting_CCA( // the IUT sends a CC-Answer
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER-SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mdw_multiple_Services_Credit_Control_Time_Quota_Mechanism(
// containing a Multiple-Services-Credit-Control AVP
mw_time_Quota_Mechanism( // containing a Time-Quota-Mechanism AVP
mw_time_Quota_Type( // containing a Time-Quota-Type AVP
PX_TIME_QUOTA_TYPE // indicating a value Table 3
),
mw_base_Time_Interval( // containing a Base-Time-Interval AVP
? // indicating the length of the base time interval
)
)
)
)
)
);
f_send_CCR( // the IUT receives a CC-Request
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
),
m_cC_Request_Number(1),
m_service_Context_Id(PX_SERVICE_CONTEXT_ID),
-,
{md_multiple_Services_Credit_Control_granted_Service_Unit_Envelope(
// containing a Multiple-Services-Credit-Control AVP
m_granted_Service_Unit_Volume( // containing a Granted-Service-Unit AVP
m_cC_Total_Octets(32) // indicating reserved units
),
m_envelope( // containing an Envelope AVP
m_envelope_Start_Time( // containing an Envelope-Start-Time AVP
0 // FIXME Set start time value
),
-, // optionally containing an Envelope-Stop-Time AVP
m_cC_Total_Octets(32), // containing a CC-Total-Octets AVP
m_cC_Input_Octets(16), // containing a CC-Input-Octets AVP
m_cC_Output_Octets(16) // containing a CC-Output-Octets AVP
// optionally containing a CC-Service-Specific-Units AVP
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_multiple_Services_Credit_Control(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER-SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
UPDATE_REQUEST_E // indicating UPDATE_REQUEST
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
2
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_13
/**
* @desc Verify that the IUT can successfully process control of offline charging information
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_OCF_OP_14() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
m_cC_Request_Number(0),
-,
-,
{m_multiple_Services_Credit_Control(
m_requested_Service_Unit_cC_Time(
m_cC_Time(PX_CC_TIME_VALUE)
)
)}
)
)
);
f_awaiting_CCA(
mdw_cCA(
vc_sessionId,
mdw_ccaBodyAvps_service_Information(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT,
vc_originRealm_IUT,
mw_cC_Request_Type( // containing a CC-Request-Type AVP
INITIAL_REQUEST_E // indicating INITIAL_REQUEST
),
mw_cC_Request_Number,
mw_service_Information_PS_Information(
// containing a Service-Information AVP
mw_ps_Information( // containing a PS-Information AVP
mw_offline_Charging // containing an Offline-Charging AVP
// contaning a Quota-Consumption-Time AVP or,
// contaning a Time-Quota-Mechanism AVP
// FIXME optionally containing an Envelope-Reporting AVP
// indicating REPORT_ENVELOPES_WITH_VOLUM
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_sendCCR_awaitCCA_(
TERMINATION_REQUEST_E,
1
);
f_postamble_Ro_CTF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_OCF_OP_14
} // End of group TP_RO_OCF_OP
} //End of group TP_RO_OCF_Role
//5.2.3.2. CTF Role
group TP_RO_CTF_Role {
// 5.2.3.2.2 Message Syntax
group TP_RO_CTF_MS {
/**
* @desc Verify that the IUT can send an CC-Request to indicate a Charging Data Transfer.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_MS_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT, // containing an Origin-Host AVP
vc_originRealm_IUT, // containing an Origin-Realm AVP
vc_destinationRealm_IUT, // containing a Destination-Realm AVP
?, // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // containing a Requested Action AVP
* // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_MS_01
/**
* @desc Verify that the IUT can send a CC-Request to indicate a Charging Data Transfer
* with valid Diameter-Header parameters.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_MS_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(mw_diameterHeaderReq_CmdFlags(CCR_E, ?, mw_cmdFlagsReq_PET(?,'0'B,'0'B)))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_MS_02
} // End of group TP_RO_CTF_MS
// 5.2.3.2.3 Type of Charging
group TP_RO_CTF_TC {
/**
* @desc Verify that the IUT sends a CC-Request [Event] with direct
* debiting due to Immediate Event Charging.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_TC_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(DIRECT_DEBITING_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_TC_01
/**
* @desc Verify that the IUT sends a CC-Request [Event]
* with price enquiry due to Immediate Event Charging.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_TC_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(PRICE_ENQUIRY_E), // containing a Requested Action AVP
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_TC_02
/**
* @desc Verify that the IUT sends a CC-Request [Event]
* with check balance due to Immediate Event Charging.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_TC_03() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(CHECK_BALANCE_E), // containing a Requested Action AVP
* // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_TC_03
/**
* @desc Verify that the IUT sends a CC-Request [Event]
* with refund account due to Immediate Event Charging.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_TC_04() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(REFUND_ACCOUNT_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}
// containing a Multiple-Services-Credit-Control AVP
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_TC_04
/**
* @desc Verify that the IUT sends a second CC-Request [Event]
* with refund account due to Immediate Event Charging
* with Refund-Information AVP if it was received in the previous CC-Answer.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_TC_05() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(DIRECT_DEBITING_E), // containing a Requested Action AVP
* // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(EVENT_REQUEST_E),
m_cC_Request_Number ( 1 ),
{m_multiple_Services_Credit_Control_RefundInfo(m_refund_Information('11'O))}
))
);
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(REFUND_ACCOUNT_E), // containing a Requested Action AVP
{mdw_multiple_Services_Credit_Control_RefundInfo(?)}
// containing a Multiple-Services-Credit-Control AVP
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_TC_05
/**
* @desc Verify that the IUT sends a CC-Request [Initial]
* to reserve units due to Event Charging with Unit Reservation.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_TC_06() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)}
// containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number +1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_TC_06
/**
* @desc Verify that the IUT sends a CC-Request [Termination]
* to debit units due to Event Charging with Unit Reservation.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_TC_07() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
// CCR,CCA [Initial] are exchanged
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(TERMINATION_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // containing a Requested Action AVP
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope(
// containing a Multiple-Services-Credit-Control AVP
{
mw_used_Service_Unit_AVP_dummy // containing a Used-Service-Unit 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(TERMINATION_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_TC_07
/**
* @desc Verify that the IUT sends a CC-Request [Initial]
* to reserve units due to Session Charging with Unit Reservation.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_TC_08() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)}
// containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitCCR_sendCCA_(
UPDATE_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_TC_08
/**
* @desc Verify that the IUT sends a CC-Request [Update]
* to debit units due to Session Charging with Unit Reservation.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_TC_09() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // containing a Requested Action AVP
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope(// containing a Multiple-Services-Credit-Control AVP
{
mw_used_Service_Unit_AVP_dummy // containing a Used-Service-Unit 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_TC_09
/**
* @desc Verify that the IUT sends a CC-Request [Termination]
* to debit units due to Session Charging with Unit Reservation.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_TC_10() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitCCR_sendCCA_(
UPDATE_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(TERMINATION_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // containing a Requested Action AVP
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope(
// containing a Multiple-Services-Credit-Control AVP
{
mw_used_Service_Unit_AVP_dummy // containing a Used-Service-Unit 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(TERMINATION_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_TC_10
} // End of group TP_RO_CTF_TC
// 5.2.3.2.4 Error Casses
group TP_RO_CTF_EC {
/**
* @desc Verify that the IUT retransmits an unacknowledged CC-Request (T-flag) with direct debiting.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_EC_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'0'B // containing T-flag
// indicating value ‘0’
)
),
?,
mdw_ccrBodyAvps(
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( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action( // containing a Requested Action AVP
DIRECT_DEBITING_E // indicating DIRECT_DEBITING
),
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not received the CC-Answer
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'1'B // containing T-flag
// indicating value ‘1’
)
),
?,
mdw_ccrBodyAvps(
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( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action( // containing a Requested Action AVP
DIRECT_DEBITING_E // indicating DIRECT_DEBITING
),
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}
// containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_EC_01
/**
* @desc Verify that the IUT retransmits an unacknowledged CC-Request (T-flag) with price enquiry.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_EC_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'0'B // containing T-flag
// indicating value ‘0’
)
),
?,
mdw_ccrBodyAvps(
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( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action( // containing a Requested Action AVP
PRICE_ENQUIRY_E // indicating PRICE_ENQUIRY
),
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}
// containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not received the CC-Answer
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'1'B // containing T-flag
// indicating value ‘1’
)
),
?,
mdw_ccrBodyAvps(
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( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action( // containing a Requested Action AVP
PRICE_ENQUIRY_E // indicating PRICE_ENQUIRY
),
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}
// containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_EC_02
/**
* @desc Verify that the IUT retransmits an unacknowledged CC-Request (T-flag).
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_EC_03() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'0'B // containing T-flag
// indicating value ‘0’
)
),
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // containing a Requested Action AVP
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not received the CC-Answer
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'1'B // containing T-flag
// indicating value ‘1’
)
),
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // containing a Requested Action AVP
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_EC_03
/**
* @desc Verify that the IUT retransmits an unacknowledged CC-Request (T-flag).
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_EC_04() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
// CCR,CCA [Initial] are exchanged.
// FIXME Done by SIP exchanges?
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'0'B // containing T-flag
// indicating value ‘0’
)
),
?,
mdw_ccrBodyAvps(
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(TERMINATION_REQUEST_E),// containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // containing a Requested Action AVP
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope(
// containing a Multiple-Services-Credit-Control AVP
{
mw_used_Service_Unit_AVP_dummy // containing a Used-Service-Unit AVP
}
)
} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not received the CC-Answer
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'1'B // containing T-flag
// indicating value ‘1’
)
),
?,
mdw_ccrBodyAvps(
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(TERMINATION_REQUEST_E),// containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // containing a Requested Action AVP
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope(
// containing a Multiple-Services-Credit-Control AVP
{
mw_used_Service_Unit_AVP_dummy // containing a Used-Service-Unit AVP
}
)
} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(TERMINATION_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_EC_04
/**
* @desc Verify that the IUT retransmits an unacknowledged CC-Request (T-flag).
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_EC_05() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'0'B // containing T-flag
// indicating value ‘0’
)
),
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // containing a Requested Action AVP
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope(
// containing a Multiple-Services-Credit-Control AVP
{
mw_used_Service_Unit_AVP_dummy // containing a Used-Service-Unit AVP
}
)
} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not received the CC-Answer
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'1'B // containing T-flag
// indicating value ‘1’
)
),
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // containing a Requested Action AVP
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope(
// containing a Multiple-Services-Credit-Control AVP
{
mw_used_Service_Unit_AVP_dummy // containing a Used-Service-Unit AVP
}
)
} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(UPDATE_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_EC_05
/**
* @desc Verify that on communication failure, the IUT stores generated accounting data in a non-volatile memory and, on communication restored, sends them to the OCS, in the order they were stored in the buffer
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_EC_06() runs on DiameterRfRo {
// Local variables
var integer v_counter;
// Preamble
f_preamble_Ro_OCF();
// CCR, CCA [Initial] and CCR, CCA [Update] are exchanged.
// FIXME Done by SIP exchanges?
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(REFUND_ACCOUNT_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not received the CC-Answer
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(REFUND_ACCOUNT_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// Wait for a long time, the IUT shall buffered CC-Request
tc_wait.start;
alt {
[] tc_wait.timeout {
// Nothing to do, just wait some time
}
} // End of 'altstep' statement
// The OCF restart
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
// The IUT shall send the buffered CC-Request
v_counter := 0;
tc_delay.start;
alt {
[] DIAMP.receive(
DIAMETER_MSG : {
cCR_MSG :=
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(REFUND_ACCOUNT_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
} // DIAMETER_MSG
) {
tc_delay.stop;
v_counter := v_counter + 1;
// Send CCA
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
tc_delay.start;
}
[] tc_delay.timeout {
// No more message buffered
}
} // End of 'altstep' statement
log("*** " & __SCOPE__ & ": INFO: " & int2str(v_counter) & " CCR were buffered by the IUT ***");
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_EC_06
/**
* @desc Verify that on communication failure, the IUT stores generated accounting data in a non-volatile memory and, on communication restored, sends them to the CDF, in the order they were stored in the buffer
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_EC_07() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'0'B // containing T-flag
// indicating value ‘0’
)
),
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(DIRECT_DEBITING_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}
// containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not received the CC-Answer
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'0'B // containing T-flag
// indicating value ‘0’
)
),
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(DIRECT_DEBITING_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// Wait for a long time, the IUT shall buffered CC-Request
tc_wait.start;
alt {
[] tc_wait.timeout {
// Nothing to do, just wait some time
}
} // End of 'altstep' statement
// The OCF restart
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
// The IUT shall send a CC-Request
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'0'B // containing T-flag
// indicating value ‘0’
)
),
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(DIRECT_DEBITING_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_EC_07
} // End of group TP_RO_CTF_EC
// 5.2.3.2.5 Tariff Changes
group TP_RO_CTF_CH {
/**
* @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Event Charging with Unit Reservation and indicates tariff time change.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_CH_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT,
vc_originRealm_IUT,
vc_destinationRealm_IUT,
mw_cC_Request_Type(INITIAL_REQUEST_E),// containing a CC-Request-Type AVP
?,
?,
omit,
{(mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff(
// containing a Multiple-Services-Credit-Control AVP
// not containing a Tariff-Change-Usage AVP
?, // containing a Requested-Service-Unit AVP
{
mw_used_Service_Unit_tariff_Changes(
// containing a Used-Service-Units AVP
mw_tariff_Change_Usage // containing a Tariff-Change-Usage AVP
)
}
))}
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_CH_01
/**
* @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Event Charging with Unit Reservation and when the IUT receives a CC-Answer with Tariff-Time-Change AVP the IUT accepts it and sends a CC-Request after the SIP session is released.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_CH_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
// the IUT receives a SIP message
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT,
vc_originRealm_IUT,
vc_destinationRealm_IUT,
mw_cC_Request_Type(INITIAL_REQUEST_E),// containing a CC-Request-Type AVP
?,
?,
omit,
{(mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff(
// containing a Multiple-Services-Credit-Control AVP
// not containing a Tariff-Change-Usage AVP
?, // containing a Requested-Service-Unit AVP
{
mw_used_Service_Unit_tariff_Changes(
// containing a Used-Service-Units AVP
mw_tariff_Change_Usage // containing a Tariff-Change-Usage AVP
)
}
))}
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(0),
{(md_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
md_granted_Service_Unit_Tariff_Time_Change(
// containing a Granted-Service-Unit AVP
m_tariff_Time_Change( // containing a Tariff-Time-Change AVP
32 // FIXME To be refined
)
)
))}
)
)
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
// the IUT receives a SIP message
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT,
vc_originRealm_IUT,
vc_destinationRealm_IUT,
mw_cC_Request_Type(TERMINATION_REQUEST_E),// containing a CC-Request-Type AVP
?,
?,
omit,
{(mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff(
// containing a Multiple-Services-Credit-Control AVP
// not containing a Tariff-Change-Usage AVP
*, // containing a Requested-Service-Unit AVP
{
mw_used_Service_Unit_AVP_dummy
}
))}
)
)
);
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(TERMINATION_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number + 1)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_CH_02
/**
* @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Event Charging with Unit Reservation and when the IUT receives a CC-Answer with Tariff-Time-Change AVP the IUT rejects it and sends a CC-Request with Termination-Cause AVP
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_CH_03() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT,
vc_originRealm_IUT,
vc_destinationRealm_IUT,
mw_cC_Request_Type(INITIAL_REQUEST_E),// containing a CC-Request-Type AVP
?,
?,
omit,
{(mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff(
// containing a Multiple-Services-Credit-Control AVP
// not containing a Tariff-Change-Usage AVP
?, // containing a Requested-Service-Unit AVP
{
mw_used_Service_Unit_tariff_Changes(
// containing a Used-Service-Units AVP
mw_tariff_Change_Usage // containing a Tariff-Change-Usage AVP
)
}
))}
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(0),
{(md_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
md_granted_Service_Unit_Tariff_Time_Change(
// containing a Granted-Service-Unit AVP
m_tariff_Time_Change( // containing a Tariff-Time-Change AVP
32 // FIXME To be refined
)
)
))}
)
)
);
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT,
vc_originRealm_IUT,
vc_destinationRealm_IUT,
mw_cC_Request_Type(TERMINATION_REQUEST_E),// containing a CC-Request-Type AVP
?,
?,
omit,
{(mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff(
// containing a Multiple-Services-Credit-Control AVP
// not containing a Tariff-Change-Usage AVP
*, // containing a Requested-Service-Unit AVP
{
mw_used_Service_Unit_AVP_dummy
}
))},
mw_terminationCause( // containing a Termination-Cause AVP
DIAMETER_BAD_ANSWER_E // indicating DIAMETER_BAD_ANSWER
)
)
)
);
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(TERMINATION_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number + 1)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_CH_03
/**
* @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation and indicates tariff time change.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_CH_04() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT,
vc_originRealm_IUT,
vc_destinationRealm_IUT,
mw_cC_Request_Type(INITIAL_REQUEST_E),// containing a CC-Request-Type AVP
?,
?,
omit,
{(mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff(
// containing a Multiple-Services-Credit-Control AVP
// not containing a Tariff-Change-Usage AVP
?, // containing a Requested-Service-Unit AVP
{
mw_used_Service_Unit_tariff_Changes(
// containing a Used-Service-Units AVP
mw_tariff_Change_Usage // containing a Tariff-Change-Usage AVP
)
}
))}
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitCCR_sendCCA_(
UPDATE_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_CH_04
/**
* @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation and when the IUT receives a CC-Answer with Tariff-Time-Change AVP the IUT accepts it and sends a CC-Request after the SIP session is released
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_CH_05() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT,
vc_originRealm_IUT,
vc_destinationRealm_IUT,
mw_cC_Request_Type(INITIAL_REQUEST_E),// containing a CC-Request-Type AVP
?,
?,
omit,
{(mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff(
// containing a Multiple-Services-Credit-Control AVP
// not containing a Tariff-Change-Usage AVP
?, // containing a Requested-Service-Unit AVP
{
mw_used_Service_Unit_tariff_Changes(
// containing a Used-Service-Units AVP
mw_tariff_Change_Usage // containing a Tariff-Change-Usage AVP
)
}
))}
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(0),
{(md_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
md_granted_Service_Unit_Tariff_Time_Change(
// containing a Granted-Service-Unit AVP
m_tariff_Time_Change( // containing a Tariff-Time-Change AVP
32 // FIXME To be refined
)
)
))}
)
)
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitCCR_sendCCA_(
UPDATE_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT,
vc_originRealm_IUT,
vc_destinationRealm_IUT,
mw_cC_Request_Type(TERMINATION_REQUEST_E),// containing a CC-Request-Type AVP
?,
?,
omit,
{(mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff(
// containing a Multiple-Services-Credit-Control AVP
// not containing a Tariff-Change-Usage AVP
*, // containing a Requested-Service-Unit AVP
{
mw_used_Service_Unit_AVP_dummy
}
))}
)
)
);
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(TERMINATION_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number + 1)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_CH_05
/**
* @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation and when the IUT receives a CC-Answer with Tariff-Time-Change AVP the IUT rejects it and sends a CC-Request with Termination-Cause AVP
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_CH_06() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT,
vc_originRealm_IUT,
vc_destinationRealm_IUT,
mw_cC_Request_Type(INITIAL_REQUEST_E),// containing a CC-Request-Type AVP
?,
?,
omit,
{(mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff(
// containing a Multiple-Services-Credit-Control AVP
// not containing a Tariff-Change-Usage AVP
?, // containing a Requested-Service-Unit AVP
{
mw_used_Service_Unit_tariff_Changes(
// containing a Used-Service-Units AVP
mw_tariff_Change_Usage // containing a Tariff-Change-Usage AVP
)
}
))}
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(0),
{(md_multiple_Services_Credit_Control_granted_Service_Unit(
// containing a Multiple-Services-Credit-Control AVP
md_granted_Service_Unit_Tariff_Time_Change(
// containing a Granted-Service-Unit AVP
m_tariff_Time_Change( // containing a Tariff-Time-Change AVP
32 // FIXME To be refined
)
)
))}
)
)
);
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT,
vc_originRealm_IUT,
vc_destinationRealm_IUT,
mw_cC_Request_Type(TERMINATION_REQUEST_E),// containing a CC-Request-Type AVP
?,
?,
omit,
{(mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff(
// containing a Multiple-Services-Credit-Control AVP
// not containing a Tariff-Change-Usage AVP
*, // containing a Requested-Service-Unit AVP
{
mw_used_Service_Unit_AVP_dummy
}
))},
mw_terminationCause( // containing a Termination-Cause AVP
DIAMETER_BAD_ANSWER_E // indicating DIAMETER_BAD_ANSWER
)
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(TERMINATION_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
// f_awaitCCR_sendCCA_(
// UPDATE_REQUEST_E,
// vc_recv_cC_Request_Number + 1
// );
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
// f_awaitCCR_sendCCA_(
// TERMINATION_REQUEST_E,
// vc_recv_cC_Request_Number + 1
// );
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_CH_06
} // End of group TP_RO_CTF_CH
// 5.2.3.2.6 Re-Authorization
group TP_RO_CTF_RE {
/**
* @desc Verify that the IUT sends a CC-Request [Update] to reserve and debit units due to Session Charging with Unit Reservation and when the re-authorization procedure starts the IUT sends appropriate answer after an RA-Request is received
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_RE_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // containing a Requested Action AVP
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope(// containing a Multiple-Services-Credit-Control AVP
{
mw_used_Service_Unit_AVP_dummy // containing a Used-Service-Unit 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number + 1)
))
);
f_send_RAR(
md_rAR(
vc_sessionId, // containing a Session-ID AVP
md_rarBodyAvps(
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
vc_destinationRealm, // containing a Destination-Realm AVP
vc_destinationHost, // containing a Destination-Host AVP
m_auth_Application_Id( // containing an Auth-Application-Id AVP
4 // indicating the value 4
),
m_re_Auth_Request_dummy // containing a Re-Auth-Request-Type AVP
// indicating AUTHORIZE_ONLY
)
)
);
f_awaiting_RAA(
mdw_rAA(
vc_sessionId, // containing a Session-ID AVP
mdw_raaBodyAvps(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT, // containing an Origin-Host AVP
vc_originRealm_IUT // containing an Origin-Realm AVP
)
)
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_RE_01
} // End of group TP_RO_CTF_RE
// 5.2.3.2.7 Failure Handling
group TP_RO_CTF_FH {
/**
* @desc Verify that the IUT can successfully override local CCFH values due to Event Charging with Unit Reservation.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FH_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit,
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId,
md_ccaBodyAvps_MultipleServiceCreditControl(
m_resultCode(
DIAMETER_SUCCESS_E
),
vc_originHost,
vc_originRealm,
m_cC_Request_Type(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multiple_Services_Credit_Control_granted_Service_Unit(
md_granted_Service_Unit_Tariff_Time_Change( // containing a Granted-Service-Unit AVP
m_tariff_Time_Change( // containing a Tariff-Time-Change AVP
32 // FIXME To be refined
)
)
)
},
-,
m_credit_Control_Failure_Handling( // containing a Credit-Control-Failure-Handling AVP
CONTINUE_E // indicating CONTINUE
)
)
)
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
// the OCF stops responding
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FH_01
/**
* @desc Verify that the IUT can successfully override local CCFH values due to Event Charging with Unit Reservation.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FH_01_2ndOCF() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit,
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not receive a CC-Answer
f_awaiting_CCR( // the IUT sends a CC-Request
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost_IUT,
vc_originRealm_IUT,
vc_destinationRealm_IUT,
mw_cC_Request_Type(INITIAL_REQUEST_E),// containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
?,
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)}, // containing a Multiple-Services-Credit-Control AVP
-,
mw_service_Information( // containing a Service-Information AVP
-,
mw_ims_Information(
-,
mw_alternate_Charged_Party_Address( // containing an Alternate-Charged-Party-Address AVP
PX_SECONDARY_OCF_ADDRESS // indicating a different OCF server
)
)
)
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FH_01_2ndOCF
/**
* @desc Verify that the IUT can successfully override local DDFH value with Direct Debiting.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FH_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E),// containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(DIRECT_DEBITING_E),
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId,
md_ccaBodyAvps_MultipleServiceCreditControl(
m_resultCode(
DIAMETER_SUCCESS_E
),
vc_originHost,
vc_originRealm,
m_cC_Request_Type(EVENT_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multiple_Services_Credit_Control_granted_Service_Unit(
md_granted_Service_Unit_Tariff_Time_Change( // containing a Granted-Service-Unit AVP
m_tariff_Time_Change( // containing a Tariff-Time-Change AVP
32 // FIXME To be refined
)
)
)
},
-,
-,
m_direct_Debiting_Failure_Handling( // containing a Direct-Debiting-Failure-Handling AVP
TERMINATE_OR_BUFFER_E // indicating TERMINATE_OR_BUFFER
)
)
)
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FH_02
/**
* @desc Verify that the IUT can successfully override local DDFH value with Direct Debiting.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FH_02_2ndOCF() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(DIRECT_DEBITING_E),
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not receive a CC-Answer
f_awaiting_CCR(
mw_CCR_CmdFlags_PET(
mw_diameterHeaderReq_CmdFlags( // containing Diameter-Header
CCR_E,
?,
mw_cmdFlagsReq_PET( // containing Command-Flags
?,'0'B,
'1'B // containing T-flag
// indicating value ‘1’
)
),
?,
mdw_ccrBodyAvps(
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( // containing a CC-Request-Type AVP
EVENT_REQUEST_E // indicating EVENT_REQUEST
),
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action( // containing a Requested Action AVP
DIRECT_DEBITING_E // indicating DIRECT_DEBITING
),
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FH_02_2ndOCF
} // End of group TP_RO_CTF_FH
// 5.2.3.2.8 Failover
group TP_RO_CTF_FA {
/**
* @desc Verify that on connection failure with the pimary OCF, the IUT sends a CC-Request [Event] to the secondary OCF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FA_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(PRICE_ENQUIRY_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not received the CC-Answer
log("The IUT does not received the CC-Answer from first OCF");
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FA_01
/**
* @desc Verify that on connection failure with the pimary OCF, the IUT sends a CC-Request [Event] to the secondary OCF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FA_01_2ndOCF() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(PRICE_ENQUIRY_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FA_01_2ndOCF
/**
* @desc Verify that on connection restored, the IUT sends a CC-Request [Event] to the primary OCF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FA_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(PRICE_ENQUIRY_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not received the CC-Answer
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
// to indicate the OCF restart
f_send_DWR(m_DWR_basic(vc_originHost, vc_originRealm));
f_awaiting_DWA(mw_DWA_dummy);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(PRICE_ENQUIRY_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FA_02
/**
* @desc Verify that on connection restored, the IUT sends a CC-Request [Event] to the primary OCF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FA_02_2ndOCF() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(PRICE_ENQUIRY_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
// No message received
tc_wait.start;
alt {
[] DIAMP.receive(
DIAMETER_MSG : {
cCR_MSG := mdw_cCR(
?,
mw_CCR_Body_dummy
)
}
) {
tc_wait.stop;
log("*** " & __SCOPE__ & ": ERROR: IUT should send CC-Request to the primary OCF. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_wait.timeout {
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
}
}
f_postamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FA_02_2ndOCF
/**
* @desc Verify that on connection failure with the pimary OCF, the IUT sends a CC-Request [Initial] to the secondary OCF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FA_03() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
// Wait for a long time, the IUT shall detect the primary OCF is down
tc_wait.start;
alt {
[] tc_wait.timeout {
// Nothing to do, just wait some time
}
} // End of 'altstep' statement
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FA_03
/**
* @desc Verify that on connection failure with the pimary OCF, the IUT sends a CC-Request [Initial] to the secondary OCF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FA_03_2ndOCF() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(CHECK_BALANCE_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FA_03_2ndOCF
/**
* @desc Verify that, on connection restored, the IUT sends a CC-Request [Initial] to the primary OCF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FA_04() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(PRICE_ENQUIRY_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
// the IUT does not received the CC-Answer
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
// to indicate the OCF restart
f_send_DWR(m_DWR_basic(vc_originHost, vc_originRealm));
f_awaiting_DWA(mw_DWA_dummy);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(PRICE_ENQUIRY_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(EVENT_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FA_04
/**
* @desc Verify that, on connection restored, the IUT sends a CC-Request [Initial] to the primary OCF.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_FA_04_2ndOCF() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(EVENT_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
mw_requested_Action(PRICE_ENQUIRY_E), // containing a Requested Action AVP
{(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))} // containing a Multiple-Services-Credit-Control AVP
)
)
);
log("CCA is not sent out from 2nd OCF.");
// f_send_CCA(
// md_cCA(
// vc_sessionId, // containing a Session-ID AVP
// md_ccaBodyAvps(
// 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(EVENT_REQUEST_E)
// ))
// );
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
// No message received
tc_wait.start;
alt {
[] DIAMP.receive(
DIAMETER_MSG : {
cCR_MSG := mdw_cCR(
?,
mw_CCR_Body_dummy
)
}
) {
tc_wait.stop;
log("*** " & __SCOPE__ & ": ERROR: IUT should send CC-Request to the primary OCF. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_wait.timeout {
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
}
}
f_postamble_Ro_OCF2();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_FA_04_2ndOCF
} // End of group TP_RO_CTF_FA
// 5.2.3.2.9 Credit Pooling
group TP_RO_CTF_CP {
/**
* @desc Verify that the IUT sends a CC-Request [Event] with direct debiting due to Immediate Event Charging.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_CP_RO_CTF_CP_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps_MultipleServiceIndicator(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)}, // containing a Multiple-Services-Credit-Control AVP
mw_multiple_Services_Indicator(
MULTIPLE_SERVICES_SUPPORTED_E // indicating MULTIPLE_SERVICES_SUPPORTED
)
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_CP_RO_CTF_CP_01
/**
* @desc Verify that the IUT supports independent credit-control of multiple services within a (sub-) session and sends a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_CP_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps_MultipleServiceIndicator(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)}, // containing a Multiple-Services-Credit-Control AVP
mw_multiple_Services_Indicator(
MULTIPLE_SERVICES_SUPPORTED_E // indicating MULTIPLE_SERVICES_SUPPORTED
)
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitCCR_sendCCA_(
UPDATE_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_CP_02
} // End of group TP_RO_CTF_CP
// 5.2.3.2.10 Other Procedures
group TP_RO_CTF_OP {
/**
* @desc Verify that, IUT can return the quotas when the traffic ceases.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_01() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multiple_Services_Credit_Control_quota_Holding_Time(
m_quota_Holding_Time(4)
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?), // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_granted_Service_Unit_Volume_Quota_Threshold
(
mdw_granted_Service_Unit_Volume( // containing a Granted-Service-Unit AVP
(?,*,*), // containing a CC-Total-Octets AVP or
(*,?,*), // containing a CC-Input-Octets AVP or
(*,*,?) // containing a CC-Output-Octets AVP
),
?
)
} // 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)// containing a CC-Request-Number AVP
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_01
/**
* @desc Verify that, IUT can return the quotas when the traffic ceases.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_02() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multiple_Services_Credit_Control_quota_Holding_Time(
m_quota_Holding_Time(0)
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?), // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_noGrantedServUnitVolume_noQuotaThreshold
} // 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)// containing a CC-Request-Number AVP
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_02
/**
* @desc Verify that, IUT can return the quotas when the traffic ceases - Based on IUT local value.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_03() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
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(INITIAL_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?), // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_granted_Service_Unit_Volume_Quota_Threshold
(
mdw_granted_Service_Unit_Volume( // containing a Granted-Service-Unit AVP
(?,*,*), // containing a CC-Total-Octets AVP or
(*,?,*), // containing a CC-Input-Octets AVP or
(*,*,?) // containing a CC-Output-Octets AVP
),
?
)
} // 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)// containing a CC-Request-Number AVP
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_03
/**
* @desc Verify that the IUT supports a credit re-authorization and returns an appropriate RA-Answer.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_04() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // containing a Requested Action AVP
* // a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
m_multiple_Services_Credit_Control_Trigger(
m_trigger(m_trigger_Type(CHANGE_IN_LOCATION_E)) //CHANGE_IN_LOCATION_E may be changed to some other value
)
}
))
);
f_send_RAR(
md_rAR(
vc_sessionId, // containing a Session-ID AVP
md_rarBodyAvps(
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
vc_destinationRealm, // containing a Destination-Realm AVP
vc_destinationHost, // containing a Destination-Host AVP
m_auth_Application_Id( // containing an Auth-Application-Id AVP
c_applIdRo // indicating the value 4
),
m_re_Auth_Request_dummy // containing a Re-Auth-Request-Type AVP
// indicating AUTHORIZE_ONLY
)
)
);
f_awaiting_RAA(
mdw_rAA(
vc_sessionId, // containing a Session-ID AVP
mdw_raaBodyAvps(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT, // containing an Origin-Host AVP
vc_originRealm_IUT // containing an Origin-Realm AVP
)
)
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_04
/**
* @desc Verify that the IUT can return the reporting quota usage in a Multiple-Services-Credit-Control AVP.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_05() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_Trigger_reportingReason // containing a Multiple-Services-Credit-Control AVP
(
*, //Trigger AVP
{m_reporting_Reason(PX_REPORTING_REASON_TYPE_TABLE4)}
)
}
)
)
);
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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)// containing a CC-Request-Number AVP
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_05
/**
* @desc Verify that the IUT can return the reporting quota usage in a Multiple-Services-Credit-Control AVP - RATING_CONDITION_CHANGE (6).
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_06() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_Trigger_reportingReason // containing a Multiple-Services-Credit-Control AVP
(
mw_trigger(?),
{mw_reporting_Reason(RATING_CONDITION_CHANGE_E)}
)
}
)
)
);
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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)// containing a CC-Request-Number AVP
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_06
/**
* @desc Verify that the IUT can return the reporting quota usage in a Used-Service-Unit AVP (Table 5).
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_07() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(
{mw_used_Service_Unit_ReportingReason
(mw_reporting_Reason(PX_REPORTING_REASON_TYPE_TABLE5))
}
)
}
)
)
);
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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)// containing a CC-Request-Number AVP
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_07
/**
* @desc Verify that the IUT can process termination action.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_08() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(
{mw_used_Service_Unit_AVP_dummy}
)
}
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
m_multiple_Services_Credit_Control_finalUnitInd(
m_final_Unit_Indication(m_final_Unit_Action(TERMINATE_E))
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(TERMINATION_REQUEST_E),// containing a CC-Request-Type AVP
mw_cC_Request_Number(?), // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(
{mw_used_Service_Unit_AVP_dummy}
)
}
)
)
);
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(TERMINATION_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)// containing a CC-Request-Number AVP
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_08
/**
* @desc Verify that the IUT can process termination action after redirection.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_09() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(
{mw_used_Service_Unit_AVP_dummy}
)
}
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
m_multiple_Services_Credit_Control_finalUnitInd(
m_final_Unit_Indication_redirect(
m_final_Unit_Action(REDIRECT_E),
m_redirect_Server(
m_redirect_Address_Type( // containing Redirect-Address-Type AVP
IPV4_ADDRESS_E
),
m_redirect_Server_Address( // containing Redirect-Server-Address AVP
PX_REDIRECT_SERVER_ADDRESS
)
))//IPV4_ADDRESS_E or
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number + 1 //TODO how to check Indication for user C
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_awaitCCR_sendCCA_(
UPDATE_REQUEST_E,
vc_recv_cC_Request_Number + 1 //TODO how to check Indication for user C
);
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1 //TODO how to check Indication for user C
);
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_09
/**
* @desc Verify that the IUT can process quota consumption time.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_10() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)}
// containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multiple_Services_Credit_Control_grantedServUnit_quotaConsumTime(
md_granted_Service_Unit_cC_Time(m_cC_Time(32)),
m_quota_Consumption_Time(5)//indicating a period equal to the Quota Consumption Time
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E),// containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(
{mw_used_Service_Unit_AVP_dummy}
)
}
)
)
);
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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)// containing a CC-Request-Number AVP
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_10
/**
* @desc Verify that the IUT can successfully terminate sessions on a CCR, CCA [Update] exchange.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_11() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(
{mw_used_Service_Unit_AVP_dummy}
)
}
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_ReqNumber(
m_resultCode( // containing a Result-Code AVP
DIAMETER_AUTHORIZATION_REJECTED_E
// indicating DIAMETER-AUTHORIZATION-REJECTED
),
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
m_cC_Request_Type(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)// containing a CC-Request-Number AVP
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_11
/**
* @desc Verify that the IUT can successfully terminate session on an ASR, ASA exchange.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_12() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaitCCR_sendCCA_(
INITIAL_REQUEST_E,
vc_recv_cC_Request_Number
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaitCCR_sendCCA_(
UPDATE_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_send_ASR( // the IUT receives an AS-Request
md_aSR(
vc_sessionId, // containing a Session-ID AVP
md_asrBodyAvps(
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
vc_destinationRealm, // containing a Destination-Realm AVP
vc_destinationHost, // containing a Destination-Host AVP
m_auth_Application_Id(4) // containing an Auth-Application-Id AVP
)
)
);
f_awaiting_ASA( // the IUT sends an AS-Answer
mdw_aSA(
vc_sessionId, // containing a Session-ID AVP
mdw_asaBodyAvps(
mw_resultCode( // containing a Result-Code AVP
DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS
),
vc_originHost_IUT, // containing an Origin-Host AVP
vc_originRealm_IUT // containing an Origin-Realm AVP
)
)
);
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(TERMINATION_REQUEST_E), // containing a CC-Request-Type AVP
?, // containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
omit, // containing a Requested Action AVP
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope(
// containing a Multiple-Services-Credit-Control AVP
{
mw_used_Service_Unit_AVP_dummy // containing a Used-Service-Unit AVP
}
)
}
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps(
m_resultCode( // containing a Result-Code AVP
DIAMETER_AUTHORIZATION_REJECTED_E
// indicating DIAMETER-AUTHORIZATION-REJECTED
),
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
m_cC_Request_Type(TERMINATION_REQUEST_E)
))
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_12
/**
* @desc Verify that the IUT can process quota consumption time.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_13() runs on DiameterRfRo {
// Local variables
var integer v_counter;
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(vc_recv_cC_Request_Number),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multiple_Services_Credit_Control_granted_Service_Unit_Envelope_Reporting(
md_granted_Service_Unit_cC_Time(m_cC_Time(32)),
m_envelope_Reporting( // containing an Envelope-Reporting AVP
DO_NOT_REPORT_ENVELOPES_E
// indicating DO_NOT_REPORT_ENVELOPES
)
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope(?)
// containing a Multiple-Services-Credit-Control AVP
// containing a Used-Service-Unit AVP
}
)
)
);
//folowing code need to be checked if it is related to TP
// for (v_counter := 0; v_counter < lengthof(vc_recvDiamMsg.cCR.cCR_Body.multiple_Services_Indicator.Multiple_Services_Credit_Control_AVP); v_counter := v_counter + 1) {
// if (
// ispresent(
// vc_recvDiamMsg.cCR.cCR_Body.multiple_Services_Indicator.multiple_Services_Credit_Control[v_counter].multiple_Services_Credit_Control
// )
// ) { // not containing an Envelope AVP
// f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
// f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // Error
// }
//
// } // end of 'for' statement
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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_13
/**
* @desc Verify that the IUT can successfully process Envelope-Reporting AVP [REPORT_ENVELOPES].
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_14() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(vc_recv_cC_Request_Number),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multiple_Services_Credit_Control_granted_Service_Unit_Envelope_Reporting(
md_granted_Service_Unit_cC_Time(m_cC_Time(32)),
m_envelope_Reporting( // containing an Envelope-Reporting AVP
REPORT_ENVELOPES_E
// indicating REPORT_ENVELOPES_E
)
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(?, // containing a Used-Service-Unit AVP
{mw_envelope(?)} // containing a Envelope 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_14
/**
* @desc Verify that the IUT can successfully process Envelope-Reporting AVP [REPORT_ENVELOPES_WITH_VOLUME].
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_15() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(vc_recv_cC_Request_Number),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multiple_Services_Credit_Control_granted_Service_Unit_Envelope_Reporting(
md_granted_Service_Unit_cC_Time(m_cC_Time(32)),
m_envelope_Reporting( // containing an Envelope-Reporting AVP
REPORT_ENVELOPES_WITH_VOLUME_E
// indicating REPORT_ENVELOPES_WITH_VOLUME_E
)
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(?, // containing a Used-Service-Unit AVP
{mw_envelope(mw_envelope_Start_Time, -, ?, ?, ?, -)} // containing a Envelope 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_15
/**
* @desc Verify that the IUT can successfully process Envelope-Reporting AVP [REPORT_ENVELOPES_WITH_EVENT].
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_16() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(vc_recv_cC_Request_Number),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multiple_Services_Credit_Control_granted_Service_Unit_Envelope_Reporting(
md_granted_Service_Unit_cC_Time(m_cC_Time(32)),
m_envelope_Reporting( // containing an Envelope-Reporting AVP
REPORT_ENVELOPES_WITH_EVENTS_E
// indicating REPORT_ENVELOPES_WITH_EVENT_E
)
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E),// containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(?, // containing a Used-Service-Unit AVP
{mw_envelope(mw_envelope_Start_Time, -, omit, omit, omit, mw_cC_Service_Specific_Units)} // containing a Envelope 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number +1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_16
/**
* @desc Verify that the IUT can successfully process Envelope-Reporting AVP [REPORT_ENVELOPES_WITH_VOLUME_AND_EVENT].
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_17() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(vc_recv_cC_Request_Number),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multiple_Services_Credit_Control_granted_Service_Unit_Envelope_Reporting(
md_granted_Service_Unit_cC_Time(m_cC_Time(32)),
m_envelope_Reporting( // containing an Envelope-Reporting AVP
REPORT_ENVELOPES_WITH_VOLUME_AND_EVENTS_E
// indicating REPORT_ENVELOPES_WITH_VOLUME_AND_EVENT_E
)
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(?, // containing a Used-Service-Unit AVP
{mw_envelope(mw_envelope_Start_Time, -, ?, ?, ?, ?)} // containing a Envelope 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_17
/**
* @desc Verify that the IUT can successfully process combinational quota without Quota-Consumption-Time mechanism..
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_18() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(vc_recv_cC_Request_Number),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multiple_Services_Credit_Control_Time_Quota_Mechanism(
m_time_Quota_Mechanism(
m_time_Quota_Type(PX_TIME_QUOTA_TYPE_TABLE6),//CONTINUOUS_TIME_PERIOD_E
m_base_Time_Interval(5)//base time interval
)
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(?, // containing a Used-Service-Unit AVP
{mw_envelope(mw_envelope_Start_Time)} // containing a Envelope 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_18
/**
* @desc Verify that the IUT can successfully process combinational quota with Quota-Consumption-Time mechanism.
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_19() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(vc_recv_cC_Request_Number),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multipleServicesCreditControl_GrantedServUnit_TimeQuotaMechanism_QuotaConsumptTime(
md_granted_Service_Unit_cC_Time(m_cC_Time(32)),
m_time_Quota_Mechanism(
m_time_Quota_Type(PX_TIME_QUOTA_TYPE_TABLE6),
m_base_Time_Interval(5)//base time interval
),
m_quota_Consumption_Time(5) // containing a Quota-Consumption-Time AVP
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(?, // containing a Used-Service-Unit AVP
{mw_envelope(mw_envelope_Start_Time,
mw_envelope_End_Time)//what kind of delta time to indicate
} // containing a Envelope 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_19
/**
* @desc Verify that the IUT can successfully process combinational quota with Quota-Consumption-Time mechanism and Envelope-Reporting AVP [REPORT_ENVELOPES_WITH_VOLUME].
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_20() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(vc_recv_cC_Request_Number),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multipleServicesCreditControl_GrantedServUnit_TimeQuotaMechanism_QuotaConsumptTime_EnvelopeReport(
md_granted_Service_Unit_cC_Time(m_cC_Time(32)),
m_time_Quota_Mechanism(
m_time_Quota_Type(PX_TIME_QUOTA_TYPE_TABLE6),
m_base_Time_Interval(5)//base time interval
),
m_quota_Consumption_Time(5), // containing a Quota-Consumption-Time AVP
m_envelope_Reporting( // containing an Envelope-Reporting AVP
REPORT_ENVELOPES_WITH_VOLUME_E
// indicating REPORT_ENVELOPES_WITH_VOLUME_E
)
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(?, // containing a Used-Service-Unit AVP
{mw_envelope(mw_envelope_Start_Time, mw_envelope_End_Time, ?, ?, ?, -)} // containing a Envelope 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_20
/**
* @desc Verify that the IUT can successfully process combinational quota with Quota-Consumption-Time mechanism and Envelope-Reporting AVP [REPORT_ENVELOPES_WITH_EVENT].
* @verdict pass on success, fail on error or inconc on timeout only
*/
function f_TC_RO_CTF_OP_21() runs on DiameterRfRo {
// Local variables
// Preamble
f_preamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(INITIAL_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(vc_recv_cC_Request_Number),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)} // containing a Multiple-Services-Credit-Control AVP
)
)
);
f_send_CCA(
md_cCA(
vc_sessionId, // containing a Session-ID AVP
md_ccaBodyAvps_MultipleServiceCreditControl(
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(INITIAL_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number),
{
md_multipleServicesCreditControl_GrantedServUnit_TimeQuotaMechanism_QuotaConsumptTime_EnvelopeReport(
md_granted_Service_Unit_cC_Time(m_cC_Time(32)),
m_time_Quota_Mechanism(
m_time_Quota_Type(PX_TIME_QUOTA_TYPE_TABLE6),
m_base_Time_Interval(5)//base time interval
),
m_quota_Consumption_Time(5), // containing a Quota-Consumption-Time AVP
m_envelope_Reporting( // containing an Envelope-Reporting AVP
REPORT_ENVELOPES_WITH_EVENTS_E
// indicating REPORT_ENVELOPES_WITH_EVENTS_E
)
)
}
))
);
f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
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(UPDATE_REQUEST_E), // containing a CC-Request-Type AVP
mw_cC_Request_Number(?),// containing a CC-Request-Number AVP
?, // containing a Service-Context-Id AVP
*, // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
{
mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope // containing a Multiple-Services-Credit-Control AVP
(?, // containing a Used-Service-Unit AVP
{mw_envelope(mw_envelope_Start_Time, mw_envelope_End_Time, omit, omit, omit, mw_cC_Service_Specific_Units)} // containing a Envelope 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(UPDATE_REQUEST_E),
m_cC_Request_Number(vc_recv_cC_Request_Number)
))
);
f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
f_awaitCCR_sendCCA_(
TERMINATION_REQUEST_E,
vc_recv_cC_Request_Number + 1
);
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
f_postamble_Ro_OCF();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_RO_CTF_OP_21
} // End of group TP_RO_CTF_OP
} //End of group TP_RO_CTF_Role
} // End of group TP_RO_Role
} // End of module DiameterRfRo_Rf_TCFunctions DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn/DiameterRfRo_Templates.ttcn 0000664 0000000 0000000 00001701550 13523273236 0031304 0 ustar 00root root 0000000 0000000 /**
* @author STF 490
* @version $Id$
* @desc This module defines RfRo Diameter Templates for message, header, and
* structured types.
* Note that any changes made to the definitions in this module
* may be overwritten by future releases of this library
* End users are encouraged to contact the distributers of this
* module regarding their modifications or additions
* Note that usage of encvalue command (codec function) returns bitstring
* length of the message or AVP with padding bytes. Therefore this function
* is not used on the first level where length of one single AVP can be
* calculated with lengthof function. It shall be used only on message level
* or in case where one AVP is group of other AVPs (ex. m_subsesEnforcementInfo_Operation_MultiBBERFact_AnGw).
* @remark Any additions to the templates shall follow the design rules
* and always modify base templates only;
*/
module DiameterRfRo_Templates {
// LibCommon
import from LibCommon_BasicTypesAndValues all;
import from LibCommon_DataStrings all;
// LibDiameter
import from LibDiameter_Types_Base_AVPs all;
import from LibDiameter_TypesAndValues all;
import from LibDiameter_Types_Gx_AVPs all;
import from LibDiameter_Types_Rx_AVPs all;
import from LibDiameter_Types_RfRo_AVPs all;
import from LibDiameter_Templates all;
group SubFields{
} // End of group SubFields
group HeaderFieldTemplates {
template (value) Command_Flags m_cmdFlagsAns_CmdFlags_T modifies m_cmdFlagsAns := {
t_bit := '1'B
}
template (value) Command_Flags m_cmdFlagsReq_CmdFlags_T modifies m_cmdFlagsReq := {
t_bit := '1'B
}
template (value) DiameterHeader m_diameterHeaderReq_CmdFlags_T(
in Command_Code p_cmdcode,
in UInt32 p_applid
) modifies m_diameterHeaderReq_dummy := {
cmdflags := m_cmdFlagsReq_CmdFlags_T
}
template DiameterHeader mw_diameterHeaderReq_CmdFlags(Command_Code p_cmdcode, template (present) UInt32 p_applid, template (present) Command_Flags p_commandFlags) modifies mw_diameterHeaderReq_dummy := {
cmdflags := p_commandFlags
}
template (present) DiameterHeader mw_diameterHeaderAns_CmdFlags(
Command_Code p_cmdcode,
template (present) UInt32 p_applid,
template (present) Command_Flags p_commandFlags
) modifies mw_diameterHeaderAns_dummy := {
cmdflags := p_commandFlags
} // End of template mw_diameterHeaderAns_CmdFlags
/**
* @desc Received generic command flag template
*/
template (present) Command_Flags mw_cmdFlagsReq_PET(in template Bit1 p_P, in Bit1 p_E,in Bit1 p_T) := {
r_bit := '1'B, //Request message
p_bit := p_P,
e_bit := p_E,
t_bit := p_T,
reserved_bits := '0000'B
} // End of template mw_cmdFlagsReq_PET
/**
* @desc Received generic command flag template
*/
template (present) Command_Flags mw_cmdFlagsAns_PET(in template Bit1 p_P, in Bit1 p_E,in Bit1 p_T) := {
r_bit := '0'B, //Answer message
p_bit := p_P,
e_bit := p_E,
t_bit := p_T,
reserved_bits := '0000'B
} // End of template mw_cmdFlagsAns_PET
} // End of group HeaderFieldTemplates
// Even if template is defined in DiameterS9_Templates module we keep it here to have RfRo specific
template (value) Subscription_Id_AVP m_subscription_Id(
in template (value) Subscription_Id_Type_AVP p_typeAVP,
in template (value) Subscription_Id_Data_AVP p_dataAVP
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(
c_subscription_Id_AVP_Code,
f_getByteAlignedLength(p_typeAVP.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_dataAVP.aVP_Header.aVP_len),
omit),
subscription_Id_Type := p_typeAVP,
subscription_Id_Data := p_dataAVP
} // End of template m_subscription_Id
template (value) Subscription_Id_Type_AVP m_subscription_Id_Type(
in template (value) Subscription_Id_Ty_Type p_aVPData
):= {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Type_AVP_Code, f_getEnumLength()),
aVP_Data := p_aVPData
} // End of template m_subscription_Id_Type
template (value) Subscription_Id_Data_AVP m_subscription_Id_Data(
in template (value) UTF8String p_aVPData
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Data_AVP_Code, f_getUTF8StringLength(valueof(p_aVPData))),
aVP_Data := p_aVPData
} // End of template m_subscription_Id_Data
group Rf_modified_message_templates {
group Rf_request_message_templates_send {
/**
* @desc Send template for ACR
* @param p_sessionId Session identifier
* @param p_acrBody ACR message body
*/
template (value) ACR_MSG md_aCR(
in template (value) Session_Id_AVP p_sessionId,
in template (value) ACR_Body_AVP p_acrBody
) modifies m_ACR_dummy := {
header := m_diameterHeaderReq_dummy(ACR_E, c_applIdRf),
session_Id := p_sessionId,
aCR_Body := p_acrBody
} // End of template md_aCR
/**
* @desc Send template for ACR
* @param p_sessionId Session identifier
* @param p_acrBody ACR message body
*/
template (value) ACR_MSG md_aCR_TflagSet(
in template (value) Session_Id_AVP p_sessionId,
in template (value) ACR_Body_AVP p_acrBody
) modifies m_ACR_dummy := {
header := m_diameterHeaderReqDuplicated_dummy(ACR_E, c_applIdRf),
session_Id := p_sessionId,
aCR_Body := p_acrBody
} // End of template md_aCR
/**
* @desc Send template for ACR message body
*/
template (omit) ACR_Body_AVP md_acrBodyAvps_TypeOfCharging(
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm,
in template (value) Accounting_Record_Type_AVP p_accounting_Record_Type,
in template (value) Accounting_Record_Number_AVP p_accounting_Record_Number,
in template (omit) Event_Timestamp_AVP p_event_Timestamp := omit,
in template (omit) Service_Information_AVP p_service_Information := omit,
in template (omit) Service_Context_Id_AVP p_service_Context_Id := omit,
in template (omit) Acct_Interim_Interval_AVP p_acct_Interim_Interval := omit
) modifies m_ACR_Body_dummy := {
origin_Host := p_originHost,
origin_Realm := p_originRealm,
accounting_Record_Type := p_accounting_Record_Type,
accounting_Record_Number := p_accounting_Record_Number,
acct_Application_Id := m_acct_Application_Id(3),
event_Timestamp := p_event_Timestamp,
service_Information := p_service_Information,
service_Context_Id := p_service_Context_Id,
acct_Interim_Interval := p_acct_Interim_Interval
} // End of template md_acrBodyAvps_TypeOfCharging_Session
} // End of group Rf_request_message_templates_send
group Rf_request_message_templates_receive {
group ACR_MSG_{
/**
* @desc Main receive message for CDF_Rf port
* @param p_aCR_MSG AC-Request message
*/
template (present) ACR_MSG mdw_aCR(
in template (present) Session_Id_AVP p_sessionId,
in template (present) ACR_Body_AVP p_acrBody
) modifies mw_ACR_dummy := {
header := mw_diameterHeaderReq_dummy(ACR_E, c_applIdRf),
session_Id := p_sessionId,
aCR_Body := p_acrBody
} // End of template mdw_aCR
/**
* @desc Main receive message for CDF_Rf port
* @param p_aCR_MSG AC-Request message
*/
template (present) ACR_MSG mdw_aCR_Header_ACRBody(
in template (present) DiameterHeader p_header,
in template (present) Session_Id_AVP p_sessionId,
in template (present) ACR_Body_AVP p_acrBody
) modifies mw_ACR_dummy := {
header := p_header,
session_Id := p_sessionId,
aCR_Body := p_acrBody
} // End of template mdw_aCR
/**
* @desc Await template for ACR
* @param p_header Diameter header
*/
template (present) ACR_MSG mw_ACR_CmdFlags_PET(in template (present) DiameterHeader p_header) modifies mw_ACR_dummy := {
header := p_header,
session_Id := ?,
aCR_Body := mw_ACR_Body_dummy
}// End of template mw_ACR_CmdFlags_PET
/**
* @desc Receive template for ACR message body
* @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred
* @param p_originHost Identifies the endpoint that originated the Diameter message
* @param p_originRealm Realm of the originator
* @param p_destinationRealm Destination realm
* @param p_accounting_Record_Type
* @param p_accounting_Record_Number
* @param p_acct_application_id
*/
template ACR_Body_AVP mdw_acrBodyAvps(
in template (present) Origin_Host_AVP p_originHost := ?,
in template (present) Origin_Realm_AVP p_originRealm := ?,
in template (present) Destination_Realm_AVP p_destinationRealm := ?,
in template (present) Accounting_Record_Type_AVP p_accounting_Record_Type := ?,
in template (present) Accounting_Record_Number_AVP p_accounting_Record_Number := ?
) modifies mw_ACR_Body_dummy := {
origin_Host := p_originHost,
origin_Realm := p_originRealm,
destination_Realm := p_destinationRealm,
accounting_Record_Type := p_accounting_Record_Type,
accounting_Record_Number := p_accounting_Record_Number,
acct_Application_Id := mw_acct_Application_Id(3)
} // End of template mdw_acrBodyAvps
/**
* @desc Receive template for ACR message body
* @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred
* @param p_originHost Identifies the endpoint that originated the Diameter message
* @param p_originRealm Realm of the originator
* @param p_destinationRealm Destination realm
* @param p_accounting_Record_Type Accounting Record Type
* @param p_accounting_Record_Number Accounting Record Number
* @param p_acct_application_id Acct application Id
* @param p_service_Information Service Information
* @param p_event_Timestamp Event Timestamp
*/
template ACR_Body_AVP mdw_acrBody_ServiceInfo_EventTimestamp(
in template (present) Origin_Host_AVP p_originHost := ?,
in template (present) Origin_Realm_AVP p_originRealm := ?,
in template (present) Destination_Realm_AVP p_destinationRealm := ?,
in template (present) Accounting_Record_Type_AVP p_accounting_Record_Type := ?,
in template (present) Accounting_Record_Number_AVP p_accounting_Record_Number := ?,
in template Service_Information_AVP p_service_Information := *,
in template Event_Timestamp_AVP p_event_Timestamp := *
) modifies mdw_acrBodyAvps := {
service_Information := p_service_Information,
event_Timestamp := p_event_Timestamp
} // End of template mdw_acrBody_ServiceInfo_EventTimestamp
}// End of group ACR_MSG
} // End of group Rf_request_message_templates_receive
group Rf_answer_message_templates_send {
/**
* @desc Send template for ACA
* @param p_sessionId Session identifier
* @param p_acaBody ACA message body
*/
template (value) ACA_MSG md_aCA(
in template (value) Session_Id_AVP p_sessionId,
in template (value) ACA_Body_AVP p_acaBody
) modifies m_ACA_dummy := {
header := m_diameterHeaderAns_dummy(ACA_E, c_applIdRf),
session_Id := p_sessionId,
aCA_Body := p_acaBody
} // End of template md_aCA
template (omit) ACA_Body_AVP md_acaBodyAvps(
in template (value) Result_Code_AVP p_resultCode,
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm,
in template (value) Accounting_Record_Type_AVP p_accounting_Record_Type,
in template (value) Accounting_Record_Number_AVP p_accounting_Record_Number
) modifies m_ACA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm,
accounting_Record_Type := p_accounting_Record_Type,
accounting_Record_Number := p_accounting_Record_Number,
acct_Application_Id := m_acct_Application_Id(3)
} // End of template md_acaBodyAvps
template (omit) ACA_Body_AVP md_acaBody_AcctInterimInterval(
in template (value) Result_Code_AVP p_resultCode,
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm,
in template (value) Accounting_Record_Type_AVP p_accounting_Record_Type,
in template (value) Accounting_Record_Number_AVP p_accounting_Record_Number,
in template (omit) Acct_Interim_Interval_AVP p_acct_Interim_Interval := omit
) modifies md_acaBodyAvps := {
acct_Interim_Interval := p_acct_Interim_Interval
} // End of template md_acaBody_AcctInterimInterval
/**
* @desc Send template for ASA
* @param p_sessionId Session identifier
* @param p_asaBody ASA message body
*/
template (value) ASA_MSG md_aSA(
in template (value) Session_Id_AVP p_sessionId,
in template (value) ASA_Body_AVP p_asaBody
) modifies m_ASA_dummy := {
header := m_diameterHeaderAns_dummy(ASA_E, c_applIdRf),
session_Id := p_sessionId,
aSA_Body := p_asaBody
} // End of template md_aSA
template (value) ASA_Body_AVP md_asaBodyAvps(
in template (value) Result_Code_AVP p_resultCode,
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm
) modifies m_ASA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm
} // End of template md_asaBodyAvps
} // End of group Rf_answer_message_templates_send
group Rf_answer_message_templates_receive {
group ACA_MSG_{
template ACA_MSG mw_ACA_CmdFlags_PET(
template (present) DiameterHeader p_header
) modifies mw_ACA_dummy := {
header := p_header,
session_Id := ?,
aCA_Body := mw_ACA_Body_dummy
}
/**
* @desc Send template for ACA
* @param p_sessionId Session identifier
* @param p_acaBody ACA message body
*/
template (present) ACA_MSG mdw_aCA(
template (present) Session_Id_AVP p_sessionId,
template (present) ACA_Body_AVP p_acaBody
) modifies mw_ACA_dummy := {
header := mw_diameterHeaderAns_dummy(ACA_E, c_applIdRf),
session_Id := p_sessionId,
aCA_Body := p_acaBody
} // End of template md_aCA
template (present) ACA_Body_AVP mdw_acaBodyAvps(
template (present) Result_Code_AVP p_resultCode,
template (present) Origin_Host_AVP p_originHost,
template (present) Origin_Realm_AVP p_originRealm,
template (present) Accounting_Record_Type_AVP p_accounting_Record_Type,
template (present) Accounting_Record_Number_AVP p_accounting_Record_Number
) modifies mw_ACA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm,
accounting_Record_Type := p_accounting_Record_Type,
accounting_Record_Number := p_accounting_Record_Number,
acct_Application_Id := mw_acct_Application_Id(3)
} // End of template mdw_acaBodyAvps
template (present) ACA_Body_AVP mdw_acaBodyAvps_AcctInterimInterval(
template (present) Result_Code_AVP p_resultCode,
template (present) Origin_Host_AVP p_originHost,
template (present) Origin_Realm_AVP p_originRealm,
template (present) Accounting_Record_Type_AVP p_accounting_Record_Type,
template (present) Accounting_Record_Number_AVP p_accounting_Record_Number,
template (present) Acct_Interim_Interval_AVP p_acct_Interim_Interval
) modifies mdw_acaBodyAvps := {
acct_Interim_Interval := p_acct_Interim_Interval
} // End of template mdw_acaBodyAvps
} // End of group ACA_MSG_
} // End of group Rf_answer_message_templates_receive
} // End of group Rf_message_templates
group Rf_avps_templates {
group Rf_dummy_avps_templates_send {
/**
* @desc The SDP-Media-Component send template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.180 SDP-Media-Component AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template SDP_Media_Component_AVP m_sdp_Media_Component_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sdp_Media_Component_AVP_Code, 0, c_vendId3gpp),
sdp_Media_Name := omit,
sdp_Media_Description := omit,
local_GW_Inserted_Indication := omit,
ip_Realm_Default_Indication := omit,
transcoder_Inserted_Indication := omit,
media_Initiator_Flag := omit,
media_Initiator_Party := omit,
threeGPP_Charging_Id := omit,
access_Network_Charging_Identifier_Value := omit,
sdp_Type := omit
} // End of template m_sdp_Media_Component_AVP_dummy
/**
* @desc The Trunk-Group-ID AVP, Basic send template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.24 7.2.237 Trunk-Group-ID AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template Trunk_Group_ID_AVP m_trunk_Group_ID_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_trunk_Group_ID_AVP_Code, 0, c_vendId3gpp),
incoming_Trunk_Group_ID := omit,
outgoing_Trunk_Group_ID := omit
} // End of template m_trunk_Group_ID_AVP_dummy
/**
* @desc Service-Information AVP, Basic send template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.192 Service-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) Service_Information_AVP m_service_Information_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_Information_AVP_Code, 0, c_vendId3gpp),
subscription_Id := omit,
aoc_Information := omit,
ps_Information := omit,
wlan_Information := omit,
ims_Information := omit,
mms_Information := omit,
lcs_Information := omit,
poc_Information := omit,
mbms_Information := omit,
sms_Information := omit,
mmtel_Information := omit,
service_Generic_Information := omit,
im_Information := omit,
dcd_Information := omit
} // End of template m_service_Information_AVP_dummy
/**
* @desc PS-Information AVP, Basic send template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.158 PS-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) PS_Information_AVP m_ps_Information_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_ps_Information_AVP_Code, 0, c_vendId3gpp),
threeGPP_Charging_Id := omit,
pdn_Connection_Charging_ID := omit,
node_Id := omit,
threeGPP_PDP_Type := omit,
pdp_Address := omit,
pdp_Address_Prefix_Length := omit,
dynamic_Address_Flag := omit,
dynamic_Address_Flag_Extension := omit,
qos_Information := omit,
sgsn_Address := omit,
ggsn_Address := omit,
sgw_Address := omit,
cg_Address := omit,
serving_Node_Type := omit,
sgw_Change := omit,
threeGPP_IMSI_MCC_MNC := omit,
imsi_Unauthenticated_Flag := omit,
threeGPP_GGSN_MCC_MNC := omit,
threeGPP_NSAPI := omit,
called_Station_Id := omit,
threeGPP_Session_Stop_Indicator := omit,
threeGPP_Selection_Mode := omit,
threeGPP_Charging_Characteristics := omit,
charging_Characteristics_Selection_Mode := omit,
threeGPP_SGSN_MCC_MNC := omit,
threeGPP_MS_TimeZone := omit,
charging_Rule_Base_Name := omit,
threeGPP_User_Location_Info := omit,
user_CSG_Information := omit,
threeGPP2_BSID := omit,
threeGPP_RAT_Type := omit,
ps_Furnish_Charging_Information := omit,
pdp_Context_Type := omit,
offline_Charging := omit,
traffic_Data_Volumes := omit,
service_Data_Container := omit,
user_Equipment_Info := omit,
terminal_Information := omit,
start_Time := omit,
stop_Time := omit,
change_Condition := omit,
diagnostics := omit,
low_Priority_Indicator := omit
} // End of template m_ps_Information_AVP_dummy
/**
* @desc The IMS-Information AVP, Basic send template
* @param p_node_Functionality
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.77 IMS-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (omit) IMS_Information_AVP m_ims_Information(
in template (value) Node_Functionality_AVP p_node_Functionality
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_ims_Information_AVP_Code,
f_getByteAlignedLength(p_node_Functionality.aVP_Header.aVP_len),
c_vendId3gpp),
event_Type := omit,
role_Of_Node := omit,
node_Functionality := p_node_Functionality,
user_Session_Id := omit,
outgoing_Session_Id := omit,
session_Priority := omit,
calling_Party_Address := omit,
called_Party_Address := omit,
called_Asserted_Identity := omit,
number_Portability_Routing_Information := omit,
carrier_Select_Routing_Information := omit,
alternate_Charged_Party_Address := omit,
requested_Party_Address := omit,
associated_URI := omit,
time_Stamps := omit,
application_Server_Information := omit,
inter_Operator_Identifier := omit,
ims_Charging_Identifier := omit,
sdp_Session_Description := omit,
sdp_Media_Component := omit,
served_Party_IP_Address := omit,
server_Capabilities := omit,
trunk_Group_ID := omit,
bearer_Service := omit,
service_Id := omit,
service_Specific_Info := omit,
message_Body := omit,
cause_Code := omit,
access_Network_Information := omit,
early_Media_Description := omit,
ims_Communication_Service_Identifier := omit,
online_Charging_Flag := omit,
real_Time_Tariff_Information := omit,
account_Expiration := omit,
initial_IMS_Charging_Identifier := omit,
ims_Emergency_Indicator := omit
} // End of template m_ims_Information_AVP
/**
* @desc The Early-Media-Description AVP, Basic send template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.58 Early-Media-Description AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template Early_Media_Description_AVP m_early_Media_Description_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_early_Media_Description_AVP_Code, 0, c_vendId3gpp),
sdp_TimeStamps := omit,
sdp_Media_Component := omit,
sdp_Session_Description := omit
} // End of template m_early_Media_Description_AVP_dummy
/**
* @desc The Service-Data-Container AVP, Basic send template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.189 Service-Data-Container AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) Service_Data_Container_AVP m_service_Data_Container_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_Data_Container_AVP_Code, 0, c_vendId3gpp),
aF_Correlation_Information := omit,
charging_Rule_Base_Name := omit,
accounting_Input_Octets := omit,
accounting_Output_Octets := omit,
local_Sequence_Number := omit,
qos_Information := omit,
rating_Group := omit,
change_Time := omit,
service_Identifier := omit,
service_Specific_Info := omit,
SGSN_Address := omit,
time_First_Usage := omit,
time_Last_Usage := omit,
time_Usage := omit,
change_Condition := omit,
threeGPP_User_Location_Info := omit,
threeGPP2_BSID := omit,
user_CSG_Information := omit
} // End of template m_service_Data_Container_AVP_dummy
/**
* @desc The Online-Charging-Flag AVP, Basic send template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.164 Real-Time-Tariff-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template Real_Time_Tariff_Information_AVP m_real_Time_Tariff_Information_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_real_Time_Tariff_Information_AVP_Code, 0, c_vendId3gpp),
tariff_Information := omit,
tariff_XML := omit
} // End of template m_real_Time_Tariff_Information_AVP_dummy
} // End of group Rf_dummy_avps_templates_send
group Rf_dummy_avps_templates_receive {
/**
* @desc The SDP-Media-Component AVP, Basic receive template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.180 SDP-Media-Component AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template SDP_Media_Component_AVP mw_sdp_Media_Component_AVP_dummy := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sdp_Media_Component_AVP_Code, ?, c_vendId3gpp),
sdp_Media_Name := *,
sdp_Media_Description := *,
local_GW_Inserted_Indication := *,
ip_Realm_Default_Indication := *,
transcoder_Inserted_Indication := *,
media_Initiator_Flag := *,
media_Initiator_Party := *,
threeGPP_Charging_Id := *,
access_Network_Charging_Identifier_Value := *,
sdp_Type := *
} // End of template mw_sdp_Media_Component_AVP_dummy
/**
* @desc The Trunk-Group-ID AVP, Basic receive template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.24 7.2.237 Trunk-Group-ID AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template Trunk_Group_ID_AVP mw_trunk_Group_ID_AVP_dummy := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_trunk_Group_ID_AVP_Code, ?, c_vendId3gpp),
incoming_Trunk_Group_ID := *,
outgoing_Trunk_Group_ID := *
} // End of template mw_trunk_Group_ID_AVP_dummy
/**
* @desc Service-Information AVP, Basic receive template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.192 Service-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template Service_Information_AVP mw_service_Information_AVP_dummy := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_service_Information_AVP_Code, ?, c_vendId3gpp),
subscription_Id := *,
aoc_Information := *,
ps_Information := *,
wlan_Information := *,
ims_Information := *,
mms_Information := *,
lcs_Information := *,
poc_Information := *,
mbms_Information := *,
sms_Information := *,
mmtel_Information := *,
service_Generic_Information := *,
im_Information := *,
dcd_Information := *
} // End of template mw_service_Information_AVP_dummy
/**
* @desc PS-Information AVP, Basic receive template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.158 PS-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template PS_Information_AVP mw_ps_Information_AVP_dummy := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_ps_Information_AVP_Code, ?, c_vendId3gpp),
threeGPP_Charging_Id := *,
pdn_Connection_Charging_ID := *,
node_Id := *,
threeGPP_PDP_Type := *,
pdp_Address := *,
pdp_Address_Prefix_Length := *,
dynamic_Address_Flag := *,
dynamic_Address_Flag_Extension := *,
qos_Information := *,
sgsn_Address := *,
ggsn_Address := *,
sgw_Address := *,
cg_Address := *,
serving_Node_Type := *,
sgw_Change := *,
threeGPP_IMSI_MCC_MNC := *,
imsi_Unauthenticated_Flag := *,
threeGPP_GGSN_MCC_MNC := *,
threeGPP_NSAPI := *,
called_Station_Id := *,
threeGPP_Session_Stop_Indicator := *,
threeGPP_Selection_Mode := *,
threeGPP_Charging_Characteristics := *,
charging_Characteristics_Selection_Mode := *,
threeGPP_SGSN_MCC_MNC := *,
threeGPP_MS_TimeZone := *,
charging_Rule_Base_Name := *,
threeGPP_User_Location_Info := *,
user_CSG_Information := *,
threeGPP2_BSID := *,
threeGPP_RAT_Type := *,
ps_Furnish_Charging_Information := *,
pdp_Context_Type := *,
offline_Charging := *,
traffic_Data_Volumes := *,
service_Data_Container := *,
user_Equipment_Info := *,
terminal_Information := *,
start_Time := *,
stop_Time := *,
change_Condition := *,
diagnostics := *,
low_Priority_Indicator := *
} // End of template mw_ps_Information_AVP_dummy
/**
* @desc The IMS-Information AVP, Basic receive template
* @param p_node_Functionality
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.77 IMS-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template IMS_Information_AVP mw_ims_Information(
template (present) Node_Functionality_AVP p_node_Functionality := ?,
template Alternate_Charged_Party_Address_AVP p_alternate_Charged_Party_Address_AVP := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_ims_Information_AVP_Code, ?, c_vendId3gpp),
event_Type := *,
role_Of_Node := *,
node_Functionality := p_node_Functionality,
user_Session_Id := *,
outgoing_Session_Id := *,
session_Priority := *,
calling_Party_Address := *,
called_Party_Address := *,
called_Asserted_Identity := *,
number_Portability_Routing_Information := *,
carrier_Select_Routing_Information := *,
alternate_Charged_Party_Address := p_alternate_Charged_Party_Address_AVP,
requested_Party_Address := *,
associated_URI := *,
time_Stamps := *,
application_Server_Information := *,
inter_Operator_Identifier := *,
ims_Charging_Identifier := *,
sdp_Session_Description := *,
sdp_Media_Component := *,
served_Party_IP_Address := *,
server_Capabilities := *,
trunk_Group_ID := *,
bearer_Service := *,
service_Id := *,
service_Specific_Info := *,
message_Body := *,
cause_Code := *,
access_Network_Information := *,
early_Media_Description := *,
ims_Communication_Service_Identifier := *,
online_Charging_Flag := *,
real_Time_Tariff_Information := *,
account_Expiration := *,
initial_IMS_Charging_Identifier := *,
ims_Emergency_Indicator := *
} // End of template mw_ims_Information
/**
* @desc The Early-Media-Description AVP, Basic receive template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.58 Early-Media-Description AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template Early_Media_Description_AVP mw_early_Media_Description_AVP_dummy := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_early_Media_Description_AVP_Code, ?, c_vendId3gpp),
sdp_TimeStamps := omit,
sdp_Media_Component := omit,
sdp_Session_Description := omit
} // End of template mw_early_Media_Description_AVP_dummy
/**
* @desc The Service-Data-Container AVP, Basic receive template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.189 Service-Data-Container AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template Service_Data_Container_AVP mw_service_Data_Container_AVP_dummy := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_service_Data_Container_AVP_Code, ?, c_vendId3gpp),
aF_Correlation_Information := *,
charging_Rule_Base_Name := *,
accounting_Input_Octets := *,
accounting_Output_Octets := *,
local_Sequence_Number := *,
qos_Information := *,
rating_Group := *,
change_Time := *,
service_Identifier := *,
service_Specific_Info := *,
SGSN_Address := *,
time_First_Usage := *,
time_Last_Usage := *,
time_Usage := *,
change_Condition := *,
threeGPP_User_Location_Info := *,
threeGPP2_BSID := *,
user_CSG_Information := *
} // End of template mw_service_Data_Container_AVP_dummy
/**
* @desc The Online-Charging-Flag AVP, Basic send template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.164 Real-Time-Tariff-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template Real_Time_Tariff_Information_AVP mw_real_Time_Tariff_Information_AVP_dummy := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_real_Time_Tariff_Information_AVP_Code, ?, c_vendId3gpp),
tariff_Information := *,
tariff_XML := *
} // End of template mw_real_Time_Tariff_Information_AVP_dummy
} // End of group Rf_dummy_avps_templates_receive
group Rf_avps_templates_send {
/**
* @desc Service-Information AVP, send template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.192 Service-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) Service_Information_AVP m_service_Information(
in template (value) Subscription_Id_AVP p_subscription_Id,
in template (value) IMS_Information_AVP p_ims_Information,
in template (value) Service_Generic_Information_AVP p_service_Generic_Information
) modifies m_service_Information_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_Information_AVP_Code,
f_getByteAlignedLength(p_subscription_Id.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_ims_Information.aVP_Header.aVP_len)+
f_getByteAlignedLength(p_service_Generic_Information.aVP_Header.aVP_len),
c_vendId3gpp),
subscription_Id := { p_subscription_Id },
ims_Information := p_ims_Information,
service_Generic_Information := p_service_Generic_Information
} // End of template m_service_Information
/**
* @desc Service-Information AVP, send template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.192 Service-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Service_Information_AVP m_Service_Information_RF_CDF_TC :=
m_service_Information(
m_subscription_Id(
m_subscription_Id_Type(END_USER_SIP_URI_E),
m_subscription_Id_Data("ETSI RFRO")
),
m_ims_Information(
m_node_Functionality(MRFC_E)
),
m_service_Generic_Information(
m_application_Server_ID("ETSI RFRO"),
m_application_Service_Type(INVITING_E),
m_application_Session_ID(1234),
m_delivery_Status("INVITING")
)
);
/**
* @desc Accounting-Record-Type AVP, send template
* @param p_aVP_Data Acc record type
*
* @see RFC3588 Clause 9.8.1 Accounting-Record-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Accounting_Record_Type_AVP m_accounting_Record_Type(
in template (value) Acc_Record_Type p_aVP_Data
) modifies m_accounting_Record_Type_dummy := {
aVP_Data := p_aVP_Data
} // End of template m_accounting_Record_Type
/**
* @desc Accounting-Record-Number AVP, send template
* @param p_aVP_Data Acc record type
*
* @see RFC3588 Clause 9.8.1 Accounting-Record-Number AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Accounting_Record_Number_AVP m_accounting_Record_Number(
in template (value) UInt32 p_aVP_Data
) modifies m_accounting_Record_Number_dummy := {
aVP_Data := p_aVP_Data
} // End of template m_accounting_Record__Number
/**
* @desc The Accounting-Input-Octets send template
* @param p_aVP_Data Number of octets transmitted during the data container recording interval, reflecting the volume counts for uplink traffic for a data flow
*
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Accounting_Input_Octets_AVP m_accounting_Input_Octets(
in template (value) UInt64 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_accounting_Input_Octets_AVP_Code, 8),
aVP_Data := p_aVP_Data
} // End of template m_accounting_Input_Octets
/**
* @desc The Accounting-Output-Octets send template
* @param p_aVP_Data Number of octets transmitted during the data container recording interval, reflecting the volume counts for downlink traffic for a data flow
*
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Accounting_Output_Octets_AVP m_accounting_Output_Octets(
in template (value) UInt64 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_accounting_Output_Octets_AVP_Code, 8),
aVP_Data := p_aVP_Data
} // End of template m_accounting_Output_Octets
/**
* @desc The Acct-Interim-Interval send template
* @param p_aVP_Data Indicates interval
*
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Acct_Interim_Interval_AVP m_acct_Interim_Interval(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_acct_Interim_Interval_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_acct_Interim_Interval
/**
* @desc The Event-Type send template
* @param p_sip_Method
* @param p_event
* @param p_aVP_Data
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.65 Event-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (omit) Event_Type_AVP m_event_Type(
in template (omit) SIP_Method_AVP p_sip_Method := omit,
in template (omit) Event_AVP p_event := omit,
in template (omit) Expires_AVP p_aVP_Data := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_event_Type_AVP_Code,
f_getEventTypeAVPLength(p_sip_Method, p_event, p_aVP_Data),
c_vendId3gpp),
sip_Method := p_sip_Method,
event := p_event,
aVP_Data := p_aVP_Data
} // End of template m_event_Type
/**
* @desc The Event send template
* @param p_aVP_Data Holds the content of the "Event" header
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.63 Event AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Event_AVP m_event(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_event_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_event
/**
* @desc The Content-Type send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Holds the media type (e.g. application/sdp, text/html) of the message-body, as described in RFC 3261
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.46 Content-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Content_Type_AVP m_content_Type(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_content_Type_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_content_Type
/**
* @desc The Content-Length send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Holds the size of the message-body, as described in RFC 3261
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.44 Content-Length AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Content_Length_AVP m_content_Length(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_content_Length_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_content_Length
/**
* @desc The Content-Disposition send template
* @param p_aVP_Data Indicates how the message body or a message body part is to be interpreted (e.g. session, render), as described in RFC 3261
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.43 Content-Disposition AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Content_Disposition_AVP m_content_Disposition(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_content_Disposition_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_content_Disposition
/**
* @desc The Role-Of-Node send template
* @param p_aVP_Data Specifies whether the IMS node (except the MRFC) is serving the calling or the called party
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.177 Role-Of-Node AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Role_Of_Node_AVP m_role_Of_Node(
in template (value) Role_Of_Node p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_role_Of_Node_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_role_Of_Node
/**
* @desc The User-Session-Id send template
* @param p_aVP_Data Holds the session identifier
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.242 User-Session-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) User_Session_Id_AVP m_user_Session_Id(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_user_Session_Id_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_user_Session_Id
/**
* @desc The Calling-Party-Address send template
* @param p_aVP_Data Holds the session identifier
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.33 Calling-Party-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Calling_Party_Address_AVP m_calling_Party_Address(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_calling_Party_Address_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_calling_Party_Address
/**
* @desc The Called-Party-Address send template
* @param p_aVP_Data Holds the session identifier
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.32 Called-Party-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Called_Party_Address_AVP m_called_Party_Address(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_called_Party_Address_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_called_Party_Address
/**
* @desc The Time-Stamps send template
* @param p_sip_Request_Timestamp
* @param p_sip_Response_Timestamp
* @param p_sip_Request_Timestamp_Fraction
* @param p_sip_Response_Timestamp_Fraction
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.231 Time-Stamps AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (omit) Time_Stamps_AVP m_time_Stamps(
in template (omit) SIP_Request_Timestamp_AVP p_sip_Request_Timestamp := omit,
in template (omit) SIP_Response_Timestamp_AVP p_sip_Response_Timestamp := omit,
in template (omit) SIP_Request_Timestamp_Fraction_AVP p_sip_Request_Timestamp_Fraction := omit,
in template (omit) SIP_Response_Timestamp_Fraction_AVP p_sip_Response_Timestamp_Fraction := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_time_Stamps_AVP_Code, f_getTimeStampsAVPLength(p_sip_Request_Timestamp, p_sip_Response_Timestamp, p_sip_Request_Timestamp_Fraction, p_sip_Response_Timestamp_Fraction), c_vendId3gpp),
sip_Request_Timestamp := p_sip_Request_Timestamp,
sip_Response_Timestamp := p_sip_Response_Timestamp,
sip_Request_Timestamp_Fraction := p_sip_Request_Timestamp_Fraction,
sip_Response_Timestamp_Fraction := p_sip_Response_Timestamp_Fraction
} // End of template m_time_Stamps
/**
* @desc The SIP-Request-Timestamp send template
* @param p_aVP_Data Holds the aVP_Data in UTC format of the SIP request
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.202 SIP-Request-Timestamp AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) SIP_Request_Timestamp_AVP m_sip_Request_Timestamp(
in template (value) Time p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sip_Request_Timestamp_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sip_Request_Timestamp
/**
* @desc The SIP-Response-Timestamp send template
* @param p_aVP_Data Holds the aVP_Data in UTC format of the SIP response
*
* @see ETSI TS 132 299 V10.18.0 Clause SIP-Response-Timestamp
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) SIP_Response_Timestamp_AVP m_sip_Response_Timestamp(
in template (value) Time p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sip_Response_Timestamp_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sip_Response_Timestamp
/**
* @desc The Application-Server send template
* @param p_aVP_Data Holds the SIP URL(s) of the AS(s) addressed during the session
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.23 Application-Server AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Application_Server_AVP m_application_Server(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_application_Server_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_application_Server
/**
* @desc The Application-provided-Called-Party-Address send template
* @param p_aVP_Data Holds the called party number (SIP URI, E.164), if it is determined by an application server
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.22 Application-provided-Called-Party-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Application_provided_Called_Party_Address_AVP m_application_provided_Called_Party_Address(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_application_provided_Called_Party_Address_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_application_provided_Called_Party_Address
/**
* @desc The Inter-Operator-Identifier send template
* @param p_originating_IOI
* @param p_terminating_IOI
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.80 Inter-Operator-Identifier AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (omit) Inter_Operator_Identifier_AVP m_inter_Operator_Identifier(
in template (omit) Originating_IOI_AVP p_originating_IOI := omit,
in template (omit) Terminating_IOI_AVP p_terminating_IOI := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_inter_Operator_Identifier_AVP_Code, f_getInterOperatorIdentifierAVPLength(p_originating_IOI, p_terminating_IOI), c_vendId3gpp),
originating_IOI := p_originating_IOI,
terminating_IOI := p_terminating_IOI
} // End of template m_inter_Operator_Identifier
/**
* @desc The Originating-IOI send template
* @param p_aVP_Data holds the Inter Operator Identifier (IOI) for the originating network as generated by the IMS network element which takes responsibility for populating this parameter [404] in a SIP request as described in TS 24.229 [202]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.123 Originating-IOI AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Originating_IOI_AVP m_originating_IOI(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_originating_IOI_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_originating_IOI
/**
* @desc The Terminating-IOI send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Holds the Inter Operator Identifier (IOI) for the terminating network as generated by the IMS network element which takes responsibility for populating this parameter [404] in a SIP response as described in TS 24.229 [202]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.225 TTerminatingerminating-IOI AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Terminating_IOI_AVP m_terminating_IOI(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_terminating_IOI_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_terminating_IOI
/**
* @desc The IMS-Charging-Identifier send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Holds the IMS Charging Identifier (ICID) as generated by a IMS node for a SIP session and described in TS 24.229 [204]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.75 IMS-Charging-Identifier AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) IMS_Charging_Identifier_AVP m_ims_Charging_Identifier(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_ims_Charging_Identifier_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_ims_Charging_Identifier
/**
* @desc The SDP-Session-Description send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Holds the content of the SDP line (i=, c=, b=, k=, a=, etc.) in the session description, as described in RFC 4566
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.184 SDP-Session-Description AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) SDP_Session_Description_AVP m_sdp_Session_Description(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sdp_Session_Description_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sdp_Session_Description
/**
* @desc The SDP-Media-Name send template
* @param p_aVP_Data Holds the content of SDP lines (i=, c=, b=, k=, a=, etc.) related to a media description, as described in RFC 4566
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.182 SDP-Media-Name AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) SDP_Media_Name_AVP m_sdp_Media_Name(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sdp_Media_Name_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sdp_Media_Name
/**
* @desc The SDP-Media-Description send template
* @param p_aVP_Data Holds the content of SDP lines (i=, c=, b=, k=, a=, etc.) related to a media description, as described in RFC 4566
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.181 SDP-Media-Description AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) SDP_Media_Description_AVP m_sdp_Media_Description(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sdp_Media_Description_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sdp_Media_Description
/**
* @desc The CG-Address send template
* @param p_aVP_Data Holds the IP-address of the charging gateway
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.36 CG-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) CG_Address_AVP m_cg_Address(
in template (value) Address p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cg_Address_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_cg_Address
/**
* @desc Event-Timestamp AVP, send template
* @param p_aVP_Data The time that the reported event occurred, in seconds
*
* @see RFC 3588 Clause 8.21 Event-Timestamp AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Event_Timestamp_AVP m_event_timestamp (UInt32 p_aVP_Data) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_event_Timestamp_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_cg_Address
/**
* @desc The Incoming-Trunk-Group-ID send template
* @param p_aVP_Data Identifies the incoming PSTN leg
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.79 Incoming-Trunk-Group-ID AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Incoming_Trunk_Group_ID_AVP m_incoming_Trunk_Group_ID(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_incoming_Trunk_Group_ID_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_incoming_Trunk_Group_ID
/**
* @desc The Outgoing-Trunk-Group-ID send template
* @param p_aVP_Data Identifies the outgoing PSTN leg
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.129 Outgoing-Trunk-Group-ID AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Outgoing_Trunk_Group_ID_AVP m_outgoing_Trunk_Group_ID(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_outgoing_Trunk_Group_ID_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_outgoing_Trunk_Group_ID
/**
* @desc The Bearer-Service send template
* @param p_aVP_Data Holds the used bearer service for the PSTN leg
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.30 Bearer-Service AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Bearer_Service_AVP m_bearer_Service(
in template (value) octetstring p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_bearer_Service_AVP_Code, f_getOctetStringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_bearer_Service
/**
* @desc The Service-ID send template
* @param p_aVP_Data Identifies the service the MRFC is hosting or AoC service
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.190 Service-ID AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Service_Id_AVP m_service_Id(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_Id_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_service_Id
/**
* @desc The Associated-URI send template
* @param p_aVP_Data Holds a non-barred public user identity (SIP URI or TEL URI) associated to the the public user identity under registration
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.26 Associated-URI AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Associated_URI_AVP m_associated_URI(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_associated_URI_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_associated_URI
/**
* @desc The Cause-Code send template
* @param p_aVP_Data Includes the cause code value from IMS node
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.35 Cause-Code AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Cause_Code_AVP m_cause_Code(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cause_Code_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_cause_Code
/**
* @desc The Node-Functionality send template
* @param p_aVP_Data Holds the functionality identifier of the node
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.113 Node-Functionality AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Node_Functionality_AVP m_node_Functionality(
in template (value) Node_Functionality p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_node_Functionality_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_node_Functionality
/**
* @desc The GGSN-Address send template
* @param p_aVP_Data Holds the IP-address of the P-GW that generated the GPRS/EPC Charging ID
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.68 GGSN-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) GGSN_Address_AVP m_ggsn_Address(
in template (value) Address p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_ggsn_Address_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_ggsn_Address
/**
* @desc The Application-Server-Information send template
* @param p_application_Server
* @param p_application_Provided_Called_Party_Address
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.24 Application-Server-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Application_Server_Information_AVP m_application_Server_Information(
in template (value) Application_Server_AVP p_application_Server,
in template (value) Application_provided_Called_Party_Address_AVP p_application_Provided_Called_Party_Address
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_application_Server_Information_AVP_Code, f_getApplicationServerInformationAVPLength(p_application_Server, p_application_Provided_Called_Party_Address), c_vendId3gpp),
application_Server := p_application_Server,
application_Provided_Called_Party_Address := { p_application_Provided_Called_Party_Address }
} // End of template m_application_Server_Information
/**
* @desc The Service-Specific-Data send template
* @param p_aVP_Data Holds the value of the Service-Specific-Data
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.194 Service-Specific-Data AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Service_Specific_Data_AVP m_service_Specific_Data(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_Specific_Data_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_service_Specific_Data
/**
* @desc The Originator send template
* @param p_aVP_Data Indicates the originating party of the message body
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.124 Originator AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Originator_AVP m_originator(
in template (value) Originator p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_Specific_Data_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_originator
/**
* @desc The PS-Append-Free-Format-Data send template
* @param p_aVP_Data Indicates if the information sent in the PS-Free-Format-Data AVP must be appended to the PS-free-format-data stored for the online-session
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.155 PS-Append-Free-Format-Data AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) PS_Append_Free_Format_Data_AVP m_ps_Append_Free_Format_Data(
in template (value) PS_Append_Free_Format_Data p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_ps_Append_Free_Format_Data_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_ps_Append_Free_Format_Data
/**
* @desc The Time-Quota-Threshold send template
* @param p_aVP_Data Contains a threshold value in seconds
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.229 Time-Quota-Threshold AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Time_Quota_Threshold_AVP m_time_Quota_Threshold(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_time_Quota_Threshold_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_time_Quota_Threshold
/**
* @desc The Volume-Quota-Threshold send template
* @member aVP_Data Holds the session identifier
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.243 Volume-Quota-Threshold AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Volume_Quota_Threshold_AVP m_volume_Quota_Threshold(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_volume_Quota_Threshold_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_volume_Quota_Threshold
/**
* @desc The Trigger-Type AVP send template
* @member aVP_Header Header AVP
* @member aVP_Data Holds the session identifier
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.236 Trigger-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Trigger_Type_AVP m_trigger_Type(
in template (value) Trigger_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_trigger_Type_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_trigger_Type
/**
* @desc The Quota-Holding-Time send template
* @member aVP_Header Header AVP
* @member aVP_Data Contains the quota holding time in seconds
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.160 Quota-Holding-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Quota_Holding_Time_AVP m_quota_Holding_Time(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_quota_Holding_Time_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_quota_Holding_Time
/**
* @desc The Quota-Holding-Time receive template
* @member aVP_Header Header AVP
* @member aVP_Data Specifies the reason for usage reporting for one or more types of quota for a particular category
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.175 Reporting-Reason AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Reporting_Reason_AVP m_reporting_Reason(
in template (value) Reporting_Reason p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_reporting_Reason_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_reporting_Reason
/**
* @desc The PS-Furnish-Charging-Information send template
* @param p_aVP_Data Holds online charging session specific data
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.156 PS-Free-Format-Data AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) PS_Free_Format_Data_AVP m_ps_Free_Format_Data(
in template (value) octetstring p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_ps_Free_Format_Data_AVP_Code, f_getOctetStringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_ps_Free_Format_Data
/**
*
* @desc The PS-Furnish-Charging-Information send template
* @param p_threeGPP_Charging_Id
* @param p_ps_Append_Free_Format_Data
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.157 PS-Furnish-Charging-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) PS_Furnish_Charging_Information_AVP m_ps_Furnish_Charging_Information(
in template (value) ThreeGPP_Charging_Id_AVP p_threeGPP_Charging_Id,
in template (value) PS_Free_Format_Data_AVP p_ps_Free_Format_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_ps_Furnish_Charging_Information_AVP_Code, f_getPSFurnishChargingInformationAVPLength(p_threeGPP_Charging_Id, p_ps_Free_Format_Data), c_vendId3gpp),
threeGPP_Charging_Id := p_threeGPP_Charging_Id,
ps_Free_Format_Data := p_ps_Free_Format_Data,
ps_Append_Free_Format_Data := omit
} // End of template m_ps_Furnish_Charging_Information
/**
* @desc The Quota-Consumption-Time send template
* @param p_aVP_Data Contains an idle traffic aVP_Data aVP_Data in seconds
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.159 Quota-Consumption-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Quota_Consumption_Time_AVP m_quota_Consumption_Time(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_quota_Consumption_Time_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_quota_Consumption_Time
/**
* @desc The Media-Initiator-Flag send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Contains an idle traffic aVP_Data aVP_Data in seconds
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.101 Media-Initiator-Flag AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Media_Initiator_Flag_AVP m_media_Initiator_Flag(
in template (value) Media_Initiator_Flag p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_media_Initiator_Flag_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_media_Initiator_Flag
/**
* @desc The Expires send template
* @param p_aVP_Data Holds the content of the "Expires" header
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.66 Expires AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Expires_AVP m_expires(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_expires_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_expires
/**
* @desc The Message-Body send template
* @param p_content_Type
* @param p_content_Length
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.103 Message-Body AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Message_Body_AVP m_message_Body(
in template (value) Content_Type_AVP p_content_Type,
in template (value) Content_Length_AVP p_content_Length
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_message_Body_AVP_Code, f_getMessageBodyAVPLength(p_content_Type, p_content_Length), c_vendId3gpp),
content_Type := p_content_Type,
content_Length := p_content_Length,
content_Disposition := omit,
originator := omit
} // End of template m_message_Body
/**
* @desc The WAG-Address send template
* @param p_aVP_Data Address and contains the WAG IP address
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.244 WAG-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) WAG_Address_AVP m_wag_Address(
in template (value) Address p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_wag_PLMN_Ids_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_wag_Address
/**
* @desc The WAG-PLMN-Ids send template
* @param p_aVP_Data Contains the WAG PLMN id (MCC and MNC)
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.245 WAG-PLMN-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) WAG_PLMN_Id_AVP m_wag_PLMN_Ids(
in template (value) octetstring p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_wag_PLMN_Ids_AVP_Code, f_getOctetStringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_wag_PLMN_Ids
/**
* @desc The WLAN-Radio-Container receive template
* @param p_operator_Name
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.247 WLAN-Radio-Container AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) WLAN_Radio_Container_AVP m_wlan_Radio_Container(
in template (value) Operator_Name_AVP p_operator_Name
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_wlan_Radio_Container_AVP_Code, f_getWLANRadioContainerAVPLength(p_operator_Name), c_vendId3gpp),
operator_Name := p_operator_Name,
location_Data := omit,
location_Information := omit,
wlan_Technology := omit
} // End of template m_wlan_Radio_Container
/**
* @desc The PDG-Address send template
* @param p_aVP_Data Address and contains the UE"s local IP address
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.250 WLAN-UE-Local-IPAddress AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) WLAN_UE_Local_IPAddress_AVP m_wlan_UE_Local_IPAddress(
in template (value) Address p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_wlan_UE_Local_IPAddress_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_wlan_UE_Local_IPAddress
/**
* @desc The PDG-Address send template
* @param p_aVP_Data Address and contains the PDG IP address
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.244 PDG-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) PDG_Address_AVP m_pdg_Address(
in template (value) Address p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_pdg_Address_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_pdg_Address
/**
* @desc The PDG-Charging-Id AVP (AVP code 896)
* @param p_aVP_Data Contains the charging identifier generated by the PDG for the tunnel
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.135 PDG-Charging-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) PDG_Charging_Id_AVP m_pdg_Charging_Id(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_pdg_Charging_Id_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_pdg_Charging_Id
/**
* @desc The Unit-Quota-Threshold send template
* @param p_aVP_Data Threshold value in service specific units
*/
template (value) Unit_Quota_Threshold_AVP m_unit_Quota_Threshold(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_unit_Quota_Threshold_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_unit_Quota_Threshold
/**
* @desc The SGSN-Address send template
* @param p_aVP_Data Holds the IP-address of the SGSN/Serving Node that was used during a report
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.199 SGSN-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) SGSN_Address_AVP m_sgsn_Address(
in template (value) Address p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sgsn_Address_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sgsn_Address
/**
* @desc The 7.2.248 WLAN-Session-Id send template
* @param p_aVP_Data Contains the charging id generated by the AAA Server for the session
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.248 WLAN-Session-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) WLAN_Session_Id_AVP m_wlan_Session_Id(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_wlan_Session_Id_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_wlan_Session_Id
/**
* @desc The PDP-Context-Type send template
* @param p_reason Contains the reason for closing a container and the addition of a new container. The AVP may take the following values
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.138 PDP-Context-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) PDP_Context_Type_AVP m_pdp_Context_Type(
in template (value) PDP_Context_Type p_reason
) :={
aVP_Header := m_aVP_HeaderVid_Mbit1(c_pdp_Context_Type_AVP_Code, 4, c_vendId3gpp),
reason := p_reason
} // End of template m_pdp_Context_Type
/**
* @desc The Called-Asserted-Identity send template
* @param p_aVP_Data Holds the address (Public User ID: SIP URI, E.164, etc.) of the finally asserted called party
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.31 Called-Asserted-Identity AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Called_Asserted_Identity_AVP m_called_Asserted_Identity(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_called_Asserted_Identity_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_called_Asserted_Identity
/**
* @desc The Requested-Party-Address send template
* @param p_aVP_Data Holds the address (SIP URI or TEL URI) of the party (Public User ID or Public Service ID) to whom the SIP transaction was originally posted
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.176 Requested-Party-ARequested-Party-AddressRequested-Party-Addressddress AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Requested_Party_Address_AVP m_requested_Party_Address(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_requested_Party_Address_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_requested_Party_Address
/**
* @desc Service-Generic-Information send template
* @param p_application_Server_ID
* @param p_application_Service_Type
* @param p_application_Session_ID
* @param p_delivery_Status
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.191 Service-Generic-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
* @see OMA-DDS-Charging_Data-V1_0-20110201-A
*/
template (omit) Service_Generic_Information_AVP m_service_Generic_Information(
in template (omit) Application_Server_ID_AVP p_application_Server_ID := omit,
in template (omit) Application_Service_Type_AVP p_application_Service_Type := omit,
in template (omit) Application_Session_ID_AVP p_application_Session_ID := omit,
in template (omit) Delivery_Status_AVP p_delivery_Status := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_Generic_Information_AVP_Code,
f_getServiceGenericInformationAVPLength(valueof(p_application_Server_ID), valueof(p_application_Service_Type), valueof(p_application_Session_ID), valueof(p_delivery_Status)),
c_vendId3gpp),
application_Server_ID := p_application_Server_ID,
application_Service_Type := p_application_Service_Type,
application_Session_ID := p_application_Session_ID,
delivery_Status := p_delivery_Status
} // End of template m_service_Generic_Information
/**
* @desc Service-Specific-Type send template
* @param p_aVP_Data Holds the type of the Service-Specific-Data
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.196 Service-Specific-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Service_Specific_Type_AVP m_service_Specific_Type(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_Specific_Type_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_service_Specific_Type
/**
* @desc The Trigger send template
* @param p_trigger_Type Holds the trigger types
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.235 Trigger AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Trigger_AVP m_trigger(
in template (value) Trigger_Type_AVP p_trigger_Type
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_trigger_AVP_Code, f_getByteAlignedLength(p_trigger_Type.aVP_Header.aVP_len), c_vendId3gpp),
trigger_Type := { p_trigger_Type }
} // End of template m_trigger
/**
* @desc Base-Time-Interval send template
* @param p_reason contains the length of the base aVP_Data interval, for controlling the consumption of aVP_Data quota, in seconds
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.29 Base-Time-Interval AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Base_Time_Interval_AVP m_base_Time_Interval(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_base_Time_Interval_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_base_Time_Interval
/**
* @desc The Time-Quota-Mechanism send template
* @param p_time_Quota_Type
* @param p_base_Time_Interval
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.228 Time-Quota-Mechanism
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (omit) Time_Quota_Mechanism_AVP m_time_Quota_Mechanism(
in template (omit) Time_Quota_Type_AVP p_time_Quota_Type := omit,
in template (omit) Base_Time_Interval_AVP p_base_Time_Interval := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_time_Quota_Mechanism_AVP_Code, f_getTimeQuotaMechanismAVPLength(p_time_Quota_Type, p_base_Time_Interval), c_vendId3gpp),
time_Quota_Type := p_time_Quota_Type,
base_Time_Interval := p_base_Time_Interval
} // End of template m_time_Quota_Mechanism
/**
* @desc The Time-Quota-Type send template
* @param p_aVP_Data Indicate which aVP_Data quota consumption mechanism shall be used for the associated Rating Group
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.230 Time-Quota-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Time_Quota_Type_AVP m_time_Quota_Type(
in template (value) Time_Quota_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_time_Quota_Type_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_time_Quota_Type
/**
* @desc The Offline-Charging send template
* @param p_quota_Consumption_Time
* @param p_time_Quota_Mechanism
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.121 Offline-Charging AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Offline_Charging_AVP m_offline_Charging(
in template (value) Quota_Consumption_Time_AVP p_quota_Consumption_Time,
in template (value) Time_Quota_Mechanism_AVP p_time_Quota_Mechanism
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_offline_Charging_AVP_Code, f_getOfflineChargingLength(p_quota_Consumption_Time, p_time_Quota_Mechanism), c_vendId3gpp),
quota_Consumption_Time := p_quota_Consumption_Time,
time_Quota_Mechanism := p_time_Quota_Mechanism,
envelope_Reporting := omit,
multiple_Services_Credit_Control := omit,
aVP_Type := omit
} // End of template m_offline_Charging
/**
* @desc Alternate-Charged-Party-Address send template
* @param p_aVP_Data Holds the address of the alternate charged party determined by an AS at IMS session initiation
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.12 Alternate-Charged-Party-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Alternate_Charged_Party_Address_AVP m_alternate_Charged_Party_Address(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_alternate_Charged_Party_Address_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_alternate_Charged_Party_Address
/**
* @desc Alternate-Charged-Party-Address send template
* @param p_aVP_Data Holds the address (SIP URI or TEL URI) of the party (Public User ID or Public Service ID) who initiates the media action, like adding/removing, connecting/disconnecting the media
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.12 Alternate-Charged-Party-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Media_Initiator_Party_AVP m_media_Initiator_Party(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_media_Initiator_Party_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_media_Initiator_Party
/**
* @desc IMS-Communication-Service-Identifier send template
* @param p_aVP_Data Holds the IMS Communication Service Identifier (ICSI) as contained in the P-Asserted-Service header of a SIP request to identify an IMS Communication Service as defined in TS 24.229 [202]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.76 IMS-Communication-Service-Identifier AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) IMS_Communication_Service_Identifier_AVP m_ims_Communication_Service_Identifier(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_ims_Communication_Service_Identifier_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_ims_Communication_Service_Identifier
/**
* @desc The Access-Network-Information send template
* @param p_aVP_Data Indicates the SIP P-header "P-Access-Network-Information"
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.1 Access-Network-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Access_Network_Information_AVP m_access_Network_Information(
in template (value) octetstring p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_access_Network_Information_AVP_Code, f_getOctetStringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_access_Network_Information
/**
* @desc Envelope send template
* @param p_envelope_Start_Time
* @param p_envelope_End_Time
* @param p_cc_Total_Octets
* @param p_cc_Input_Octets
* @param p_cc_Output_Octets
* @param p_cc_Service_Specific_Units
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.59 Envelope AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (omit) Envelope_AVP m_envelope(
in template (value) Envelope_Start_Time_AVP p_envelope_Start_Time,
in template (omit) Envelope_End_Time_AVP p_envelope_End_Time := omit,
in template (omit) CC_Total_Octets_AVP p_cc_Total_Octets := omit,
in template (omit) CC_Input_Octets_AVP p_cc_Input_Octets := omit,
in template (omit) CC_Output_Octets_AVP p_cc_Output_Octets := omit,
in template (omit) CC_Service_Specific_Units_AVP p_cc_Service_Specific_Units := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(
c_envelope_AVP_Code,
f_getEnvelopeAVPLength(
p_envelope_Start_Time,
p_envelope_End_Time,
p_cc_Total_Octets,
p_cc_Input_Octets,
p_cc_Output_Octets,
p_cc_Service_Specific_Units
),
c_vendId3gpp
),
envelope_Start_Time := p_envelope_Start_Time,
envelope_End_Time := p_envelope_End_Time,
cC_Total_Octets := p_cc_Total_Octets,
cC_Input_Octets := p_cc_Input_Octets,
cC_Output_Octets := p_cc_Output_Octets,
cC_Service_Specific_Units := p_cc_Service_Specific_Units,
aVP_Type := omit
} // End of template m_envelope
/**
* @desc The Envelope-End-Time send template
* @param p_aVP_Data Indicate the time of the end of the time envelope
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.62 Envelope-End-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Envelope_End_Time_AVP m_envelope_End_Time(
in template (value) Time p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_envelope_End_Time_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_envelope_End_Time
/**
* @desc The Envelope-Reporting send template
* @param p_aVP_Data Indicate whether the client shall report the start and end of each aVP_Data envelope, in those cases in which quota is consumed in envelopes
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.61 Envelope-Reporting AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Envelope_Reporting_AVP m_envelope_Reporting(
in template (value) Envelope_Reporting p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_envelope_Reporting_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_envelope_Reporting
/**
* @desc The Envelope-Start-Time send template
* @param p_aVP_Data Indicate the time of the packet of user data which caused the time envelope to start
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.62 Envelope-Start-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Envelope_Start_Time_AVP m_envelope_Start_Time(
in template (value) Time p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_envelope_Start_Time_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // Start of template m_envelope_Start_Time
/**
* @desc The SDP-TimeStamps send template
* @param p_sdp_Offer_Timestamp_AVP
* @param p_sdp_Answer_Timestamp_AVP
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.185 SDP-TimeStamps AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (omit) SDP_TimeStamps_AVP m_sdp_TimeStamps(
in template (omit) SDP_Offer_Timestamp_AVP p_sdp_Offer_Timestamp := omit,
in template (omit) SDP_Answer_Timestamp_AVP p_sdp_Answer_Timestamp := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sdp_TimeStamps_AVP_Code, f_getSDPTimeStampsAVPLength(p_sdp_Offer_Timestamp, p_sdp_Answer_Timestamp), c_vendId3gpp),
sdp_Offer_Timestamp := p_sdp_Offer_Timestamp,
sdp_Answer_Timestamp := p_sdp_Answer_Timestamp
} // End of template m_sdp_TimeStamps
/**
* @desc The SDP-Offer-Timestamp send template
* @param p_aVP_Data Holds the aVP_Data in UTC format of the SDP offer
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.183 SDP-Offer-Timestamp AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) SDP_Offer_Timestamp_AVP m_sdp_Offer_Timestamp(
in template (value) Time p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sdp_TimeStamps_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sdp_Offer_Timestamp
/**
* @desc The SDP-Answer-Timestamp send template
* @param p_aVP_Data Holds the aVP_Data in UTC format of the SDP offer
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.179 SDP-Answer-Timestamp AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) SDP_Answer_Timestamp_AVP m_sdp_Answer_Timestamp(
in template (value) Time p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sdp_TimeStamps_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sdp_Answer_Timestamp
/**
* @desc The AF-Correlation-Information send template
* @param p_af_Charging_Identifier
* @param p_flows Flow identifiers generated by the AF and received by P-GW over Rx/Gx as defined in TS 29.214 [214] and TS 29.212 [215]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.11 AF-Correlation-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) AF_Correlation_Information_AVP m_af_Correlation_Information(
in template (omit) AF_Charging_Identifier_AVP p_af_Charging_Identifier := omit,
in template (omit) AF_Correlation_Information_AVP.flows p_flows := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_af_Correlation_Information_AVP_Code, f_getAFCorrelationInformationAVPLength(p_af_Charging_Identifier, p_flows), c_vendId3gpp),
af_Charging_Identifier := p_af_Charging_Identifier,
flows := p_flows
} // End of template m_af_Correlation_Information
/**
* @desc The Low-Balance-Indication send template
* @param p_aVP_Data Indicates if the subscriber balance went below a designated aVP_Data by its account
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.97 Low-Balance-Indication AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Low_Balance_Indication_AVP m_low_Balance_Indication(
in template (value) Low_Balance_Indication p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_low_Balance_Indication_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_low_Balance_Indication
/**
* @desc The Remaining-Balance send template
* @param p_unit_Value
* @param p_currency_Code
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.172 Remaining-Balance AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Remaining_Balance_AVP m_remaining_Balance(
in template (value) Unit_Value_AVP p_unit_Value,
in template (value) Currency_Code_AVP p_currency_Code
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_remaining_Balance_AVP_Code, f_getRemaininBalanceAVPLength(valueof(p_unit_Value), valueof(p_currency_Code)), c_vendId3gpp),
unit_Value := p_unit_Value,
currency_Code := p_currency_Code
} // End of template m_remaining_Balance
/**
* @desc The Refund-Information send template
* @param p_aVP_Data Conveys relevant information for the OCS application relative to refund mechanism
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.171 Refund-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Refund_Information_AVP m_refund_Information(
in template (value) octetstring p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_refund_Information_AVP_Code, f_getOctetStringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_refund_Information
/**
* @desc The Carrier-Select-Routing-Information send template
* @param p_aVP_Data Holds information on carrier selection performed by S-CSCF/AS
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.34 Carrier-Select-Routing-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Carrier_Select_Routing_Information_AVP m_carrier_Select_Routing_Information(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_carrier_Select_Routing_Information_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_carrier_Select_Routing_Information
/**
* @desc The Number-Portability-Routing-Information send template
* @param p_aVP_Data Holds information on carrier selection performed by S-CSCF/AS
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.120 Number-Portability-Routing-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Number_Portability_Routing_Information_AVP m_number_Portability_Routing_Information(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_number_Portability_Routing_Information_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_number_Portability_Routing_Information
/**
* @desc The Node-Id send template
* @param p_aVP_Data Operator configurable identifier string for the node
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.114 Node-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Node_Id_AVP m_node_Id(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_node_Id_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_node_Id
/**
* @desc The Change-Condition send template
* @param p_aVP_Data Holds information if the SDP media component was of type SDP offer or SDP answer
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.186 SDP-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) SDP_Type_AVP m_sdp_Type(
in template (value) SDP_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sdp_Type_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sdp_Type
/**
* @desc The Change-Condition send template
* @param p_aVP_Data Indicates the change in charging condition
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.37 Change-Condition AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Change_Condition_AVP m_change_Condition(
in template (value) Change_Condition p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_change_Condition_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_change_Condition
/**
* @desc The Change-Time send template
* @param p_aVP_Data EPC Charging: holds the aVP_Data in UTC format when the volume counts associated to the IP-CAN bearer, or the service data container, is closed and reported due to Charging condition change
* MMTel Charging: holds the aVP_Data in UTC format and it is a aVP_Data stamp that defines the moment when the conference participant has an action
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.38 Change-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Change_Time_AVP m_change_Time(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_change_Time_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_change_Time
/**
* @desc The Diagnostics AVP (AVP code 2039)
* @param p_cause Provides a more detailed cause value from PCN node
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.54 Diagnostics AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Diagnostics_AVP m_diagnostics(
in template (value) UInt32 p_cause
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_diagnostics_AVP_Code, 4, c_vendId3gpp),
cause := p_cause
} // End of template m_diagnostics
/**
* @desc The Start-Time send template
* @param p_aVP_Data The aVP_Data in UTC format which represents the start of a user session at the S-GW/P-GW
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.215 Start-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Start_Time_AVP m_start_Time(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_start_Time_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_start_Time
/**
* @desc The Stop-Time send template
* @param p_aVP_Data The the aVP_Data in UTC format which represents the termination of a user session at the S-GW/P-GW
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.216 Stop-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Stop_Time_AVP m_stop_Time(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_stop_Time_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_stop_Time
/**
* @desc The Time-First-Usage send template
* @param p_aVP_Data The the aVP_Data in UTC format for the first IP packet to be transmitted and mapped to the current service data container
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.226 Time-First-Usage AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Time_First_Usage_AVP m_time_First_Usage(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_time_First_Usage_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_time_First_Usage
/**
* @desc The Time-Last-Usage send template
* @param p_aVP_Data The the aVP_Data in UTC format for the last IP packet to be transmitted and mapped to the current service data container
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.227 Time-Last-Usage AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Time_Last_Usage_AVP m_time_Last_Usage(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_time_Last_Usage_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_time_Last_Usage
/**
* @desc The Time-Last-Usage send template
* @param p_aVP_Data Holds the effective used aVP_Data within the service data container reporting interval.
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.232 Time-Usage AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Time_Usage_AVP m_time_Usage(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_time_Usage_Usage_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_time_Usage
/**
* @desc The Traffic-Data-Volumes send template
* @param p_accounting_Input_Octets
* @param p_accounting_Output_Octets
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.233 Traffic-Data-Volumes AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Traffic_Data_Volumes_AVP m_traffic_Data_Volumes(
in template (value) Accounting_Input_Octets_AVP p_accounting_Input_Octets,
in template (value) Accounting_Output_Octets_AVP p_accounting_Output_Octets
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_traffic_Data_Volumes_AVP_Code, f_getTrafficDataVolumesAVPLength(p_accounting_Output_Octets, p_accounting_Output_Octets), c_vendId3gpp),
qos_Information := omit,
accounting_Input_Octets := p_accounting_Input_Octets,
accounting_Output_Octets := p_accounting_Output_Octets,
change_condition := omit,
change_Time := omit,
threeGPP_User_Location_Info := omit,
user_CSG_Information := omit
} // End of template m_traffic_Data_Volumes
/**
* @desc The Serving-Node-Type send template
* @param p_aVP_Data The type of Serving Node
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.198 Serving-Node-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Serving_Node_Type_AVP m_serving_Node_Type(
in template (value) Serving_Node_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_serving_Node_Type_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_serving_Node_Type
/**
* @desc The PDN-Connection-Charging-ID send template
* @param p_aVP_Data The charging identifier to identify different records belonging to same PDN connection
*/
template (value) PDN_Connection_Charging_ID_AVP m_pdn_Connection_Charging_ID(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_pdn_Connection_Charging_ID_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_pdn_Connection_Charging_ID
/**
* @desc The Dynamic-Address-Flag send template
* @param p_aVP_Data Indicates whether the PDP context/PDN address is statically or dynamically allocated
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.57 Dynamic-Address-Flag AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Dynamic_Address_Flag_AVP m_dynamic_Address_Flag(
in template (value) Dynamic_Address_Flag p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_dynamic_Address_Flag_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_dynamic_Address_Flag
/**
* @desc The Application-Server-ID send template
* @param p_aVP_Data The Application Server identifier
*
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Application_Server_ID_AVP m_application_Server_ID(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_application_Server_ID_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_application_Server_ID
/**
* @desc The Application-Service-Type send template
* @param p_aVP_Data
*
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Application_Service_Type_AVP m_application_Service_Type(
in template (value) Application_Service_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_application_Service_Type_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_application_Service_Type
/**
* @desc The Application-Session-ID send template
* @param p_aVP_Data
*
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Application_Session_ID_AVP m_application_Session_ID(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_application_Session_ID_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_application_Session_ID
/**
* @desc The Delivery_Status send template
* @param p_aVP_Data
*
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Delivery_Status_AVP m_delivery_Status(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_delivery_Status_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_delivery_Status
/**
* @desc The Accumulated-Cost send template
* @param p_value_Digits
* @param p_exponent
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.3 Accumulated-Cost AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) Accumulated_Cost_AVP m_accumulated_Cost(
in template (value) Value_Digits_AVP p_value_Digits,
in template (omit) Exponent_AVP p_exponent := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_accumulated_Cost_AVP_Code, f_getValuesDigitsAndExponentLength(p_value_Digits, p_exponent), c_vendId3gpp),
value_Digits := p_value_Digits,
exponent := p_exponent
} // End of template m_accumulated_Cost
/**
* @desc The AoC-Information send template
* @param p_aoc_Cost_Information_AVP Holds accumulated and incremental cost information for the AoC service
* @param p_tariff_Information_AVP Holds a tariff definition either from the local provider or from 3rd party provider
* @param p_aoc_Subscription_Information Holds the subscription and formatting parameters received from HSS
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.15 AoC-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) AoC_Information_AVP m_aoc_Information(
in template (omit) AoC_Cost_Information_AVP p_aoc_Cost_Information := omit,
in template (omit) Tariff_Information_AVP p_tariff_Information := omit,
in template (omit) AoC_Subscription_Information_AVP p_aoc_Subscription_Information := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_aoc_Information_AVP_Code, f_getAoCInformationAVPLength(p_aoc_Cost_Information, p_tariff_Information, p_aoc_Subscription_Information), c_vendId3gpp),
aoc_Cost_Information := p_aoc_Cost_Information,
tariff_Information := p_tariff_Information,
aoc_Subscription_Information := p_aoc_Subscription_Information
} // End of template m_aoc_Information
/**
* @desc The AoC-Cost-Information send template
* @param p_accumulated_Cost Holds the accumulated cost for the ongoing session
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.13 AoC-Cost-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) AoC_Cost_Information_AVP m_aoc_Cost_Information(
in template (value) Accumulated_Cost_AVP p_accumulated_Cost
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_aoc_Cost_Information_AVP_Code, f_getAoCCostInformationAVPLength(p_accumulated_Cost, omit, omit), c_vendId3gpp),
accumulated_Cost := p_accumulated_Cost,
incremental_Cost := omit,
currency_Code := omit // Not used in 3GPP
} // End of template m_aoc_Cost_Information
/**
* @desc The AoC-Request-Type send template
* @param p_aoc_Request_Type Tags if the client is looking for AoCI in conjunction to the Request-Type and Request-Action AVPs
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.16 AoC-Request-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) AoC_Request_Type_AVP m_aoc_Request_Type(
in template (value) AoC_Request_Type p_aoc_Request_Type
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_aoc_Request_Type_AVP_Code, 4, c_vendId3gpp),
aoc_Request_Type := p_aoc_Request_Type
} // End of template m_aoc_Request_Type
/**
* @desc The Current-Tariff send template
* @param p_scale_Factor Holds simple multiplication factor in the same format as Unit-Value
* @param p_rate_Element Holds simple rate element of one dimension
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.47 Current-Tariff AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Current_Tariff_AVP m_current_Tariff(
in template (value) Scale_Factor_AVP p_scale_Factor,
in template (value) Rate_Element_AVP p_rate_Element
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_current_Tariff_AVP_Code, f_getTariffAVPLength(p_scale_Factor, p_rate_Element), c_vendId3gpp),
currency_Code := omit, // Not used in 3GPP
scale_Factor := p_scale_Factor,
rate_Element := {
p_rate_Element
}
} // End of template m_current_Tariff
/**
* @desc The Next-Tariff send template
* @param p_scale_Factor Holds simple multiplication factor in the same format as Unit-Value
* @param p_rate_Element Holds simple rate element of one dimension
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.112 Next-Tariff AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Next_Tariff_AVP m_next_Tariff(
in template (value) Scale_Factor_AVP p_scale_Factor,
in template (value) Rate_Element_AVP p_rate_Element
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_next_Tariff_AVP_Code, f_getTariffAVPLength(p_scale_Factor, p_rate_Element), c_vendId3gpp),
currency_Code := omit, // Not used in 3GPP
scale_Factor := p_scale_Factor,
rate_Element := {
p_rate_Element
}
} // End of template m_next_Tariff
/**
* @desc The Rate-Element AVP send template
* @param p_cc_Unit_Type_AVP
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.161 Rate-Element AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Rate_Element_AVP m_rate_Element(
in template (value) CC_Unit_Type_AVP p_cc_Unit_Type
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_rate_Element_AVP_Code, f_getRateElementAVPLength(p_cc_Unit_Type), c_vendId3gpp),
cc_Unit_Type := p_cc_Unit_Type,
charge_Reason_Code := omit,
unit_Value := omit,
unit_Cost := omit,
unit_Quota_Threshold := omit
} // End of template m_rate_Element
/**
* @desc The Scale-Factor AVP send template
* @param p_value_Digits
* @param p_exponent
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.178 Scale-Factor AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) Scale_Factor_AVP m_scale_Factor(
in template (value) Value_Digits_AVP p_value_Digits,
in template (omit) Exponent_AVP p_exponent := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_scale_Factor_AVP_Code, f_getValuesDigitsAndExponentLength(p_value_Digits, p_exponent), c_vendId3gpp),
value_Digits := p_value_Digits,
exponent := p_exponent
} // End of template m_scale_Factor
/**
* @desc The Tariff-Information send template
* @param p_current_Tariff Holds tariff information
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.223 Tariff-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Tariff_Information_AVP m_tariff_Information(
in template (value) Current_Tariff_AVP p_current_Tariff
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_tariff_Information_AVP_Code, f_getTariffInformationAVPLength(p_current_Tariff), c_vendId3gpp),
current_Tariff := p_current_Tariff,
tariff_Time_Change := omit,
next_Tariff := omit
} // End of template m_tariff_Information
/**
* @desc The Unit-Cost send template
* @param p_value_Digits
* @param p_exponent
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.239 Unit-Cost AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) Unit_Cost_AVP m_unit_Cost(
in template (value) Value_Digits_AVP p_value_Digits,
in template (omit) Exponent_AVP p_exponent := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_unit_Cost_AVP_Code, f_getValuesDigitsAndExponentLength(p_value_Digits, p_exponent), c_vendId3gpp),
value_Digits := p_value_Digits,
exponent := p_exponent
} // End of template m_unit_Cost
/**
* @desc The Incremental-Cost send template
* @param p_value_Digits
* @param p_exponent
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.70 Incremental-Cost AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) Incremental_Cost_AVP m_incremental_Cost(
in template (value) Value_Digits_AVP p_value_Digits,
in template (omit) Exponent_AVP p_exponent := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_incremental_Cost_AVP_Code, f_getValuesDigitsAndExponentLength(p_value_Digits, p_exponent), c_vendId3gpp),
value_Digits := p_value_Digits,
exponent := p_exponent
} // End of template m_incremental_Cost
/**
* @desc The Local-Sequence-Number send template
* @param p_seq_number Holds the service data container sequence number
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.93 Local-Sequence-Number AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Local_Sequence_Number_AVP m_local_Sequence_Number(
in template (value) UInt32 p_seq_number
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_local_Sequence_Number_AVP_Code, 4, c_vendId3gpp),
seq_number := p_seq_number
} // End of template m_local_Sequence_Number
/**
* @desc The SGW-Change AVP send template
* @param p_aVP_Data Accounting Request type
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.200 SGW-Change AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) SGW_Change_AVP m_sgw_Change(
in template (value) SGW_Change p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sgw_Change_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sgw_Change
/**
* @desc The Charging-Characteristics-Selection-Mode send template
* @param p_aVP_Data Indicates how the applied Charging-Characteristics was selected
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.39A Charging-Characteristics-Selection-Mode AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) Charging_Characteristics_Selection_Mode_AVP m_charging_Characteristics_Selection_Mode(
in template (value) Charging_Characteristics_Selection_Mode p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Characteristics_Selection_Mode_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_charging_Characteristics_Selection_Mode
/**
* @desc The SGW-Address send template
* @param p_aVP_Data Holds the IP-address of the S-GW Node
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.199A SGW-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (value) SGW_Address_AVP m_sgw_Address(
in template (value) Address p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sgw_Address_AVP_Code, f_getEncvalueLength(encvalue(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sgw_Address
/**
* @desc The Dynamic-Address-Flag-Extension send template
* @param p_pdpAddressAllocation indicates that the IPv4 PDN address has been dynamically allocated for that particular IP CAN bearer (PDN connection) of PDN type IPv4v6, and the dynamic IPv6 address is indicated in Dynamic Address Flag
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.57A Dynamic-Address-Flag-Extension AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Dynamic_Address_Flag_Extension_AVP m_dynamic_Address_Flag_Extension(
in template (value) Dynamic_Address_Flag_Extension p_pdpAddressAllocation
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_dynamic_Address_Flag_Extension_AVP_Code, 4, c_vendId3gpp),
pdpAddressAllocation := p_pdpAddressAllocation
} // End of template m_dynamic_Address_Flag_Extension
/**
* @desc The SIP-Request-Timestamp-Fraction send template
* @param p_aVP_Data Holds the miliseconds fraction in relation to SIP-Request-Timestamp
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.203 SIP-Request-Timestamp-Fraction AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) SIP_Request_Timestamp_Fraction_AVP m_sip_Request_Timestamp_Fraction(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sip_Request_Timestamp_Fraction_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sip_Request_Timestamp_Fraction
/**
* @desc The SIP-Response-Timestamp-Fraction send template
* @param p_aVP_Data Holds the miliseconds fraction in relation to SIP-Response-Timestamp
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.205 SIP-Response-Timestamp-Fraction AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) SIP_Response_Timestamp_Fraction_AVP m_sip_Response_Timestamp_Fraction(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_sip_Response_Timestamp_Fraction_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_sip_Response_Timestamp_Fraction
/**
* @desc The Online-Charging-Flag send template
* @param p_aVP_Data Indicates the Online Charging Request was sent based on the provided ECF address from the SIP P-header "P-Charging-Function-Addresses"
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.122 Online-Charging-Flag AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Online_Charging_Flag_AVP m_online_Charging_Flag(
in template (value) Online_Charging_Flag p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_online_Charging_Flag_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_online_Charging_Flag
/**
* @desc The Tariff-XML send template
* @param p_aVP_Data Holds the XML body describing the tariff/add-on charge information exchanged during the SIP transaction, as described in the TS 29.658 [222]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.224 Tariff-XML AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Tariff_XML_AVP m_tariff_XML(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_tariff_XML_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_tariff_XML
/**
* @desc The IMSI-Unauthenticated-Flag send template
* @param p_aVP_Data Enumerated value
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.78 IMSI-Unauthenticated-Flag AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) IMSI_Unauthenticated_Flag_AVP m_imsi_Unauthenticated_Flag(
in template (value) IMSI_Unauthenticated_Flag p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_imsi_Unauthenticated_Flag_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_imsi_Unauthenticated_Flag
/**
* @desc The Account-Expiration send template
* @param p_aVP_Data Indicates the subscriber account expiration date and aVP_Data of day
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.2 Account-Expiration AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Account_Expiration_AVP m_account_Expiration(
in template (value) Time p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_aoc_Format_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_account_Expiration
/**
* @desc The AoC-Format send template
* @param p_aVP_Data Holds the format on how the AoC information shall be sent to the UE
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.14 AoC-Format AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) AoC_Format_AVP m_aoc_Format(
in template (value) AoC_Format p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_aoc_Format_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_aoc_Format
/**
* @desc The AoC-Service send template
* @param p_aoc_Service_Obligatory_Type AoC Service type
* @param p_aoc_Service_Type AoC Service obligatory type
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.17 AoC-Service AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) AoC_Service_AVP m_aoc_Service(
in template (omit) AoC_Service_Obligatory_Type_AVP p_aoc_Service_Obligatory_Type := omit,
in template (omit) AoC_Service_Type_AVP p_aoc_Service_Type := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_aoc_Service_Obligatory_Type_AVP_Code, f_getAoCServiceAVPLength(p_aoc_Service_Obligatory_Type, p_aoc_Service_Type), c_vendId3gpp),
aoc_Service_Obligatory_Type := p_aoc_Service_Obligatory_Type,
aoc_Service_Type := p_aoc_Service_Type
} // End of template m_aoc_Service
/**
* @desc The AoC-Service-Obligatory-Type send template
* @param p_aVP_Data Holds the information if the AoC information is binding or not
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.18 AoC-Service-Obligatory-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) AoC_Service_Obligatory_Type_AVP m_aoc_Service_Obligatory_Type(
in template (value) AoC_Service_Obligatory_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_aoc_Service_Obligatory_Type_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_aoc_Service_Obligatory_Type
/**
* @desc The AoC-Service-Type AVP send template
* @param p_aVP_Data Defines the type of AoC information to be provided to the subscriber
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.19 AoC-Service-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) AoC_Service_Type_AVP m_aoc_Service_Type(
in template (value) AoC_Service_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_aoc_Service_Type_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_aoc_Service_Type
/**
* @desc The AoC-Subscription-Information send template
* @param p_aoc_Service
* @param p_aoc_Format
* @param p_preferred_AoC_Currency
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.20 AoC-Subscription-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (omit) AoC_Subscription_Information_AVP m_aoc_Subscription_Information(
in template (value) AoC_Subscription_Information_AVP.aoc_Service p_aoc_Service,
in template (omit) AoC_Format_AVP p_aoc_Format := omit,
in template (omit) Preferred_AoC_Currency_AVP p_preferred_AoC_Currency := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_aoc_Subscription_Information_AVP_Code, f_getAoCSubscriptionInformationAVPLength(p_aoc_Service, p_aoc_Format, p_preferred_AoC_Currency), c_vendId3gpp),
aoc_Service := p_aoc_Service,
aoc_Format := p_aoc_Format,
preferred_AoC_Currency := p_preferred_AoC_Currency
} // End of template m_aoc_Subscription_Information
/**
* @desc The Preferred-AoC-Currency send template
* @param p_aVP_Data Indicates the preferred currency code that the AoC function would like to get the AoC information
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.153 Preferred-AoC-Currency AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Preferred_AoC_Currency_AVP m_preferred_AoC_Currency(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_preferred_AoC_Currency_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_preferred_AoC_Currency
/**
* @desc The Initial-IMS-Charging-Identifier send template
* @param p_aVP_Data Indicates the IMS session is an IMS emergency session or IMS registration
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.76A IMS-Emergency-Indicator AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) IMS_Emergency_Indicator_AVP m_ims_Emergency_Indicator(
in template (value) IMS_Emergency_Indicator p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_initial_IMS_Charging_Identifier_AVP_Code, 2, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_ims_Emergency_Indicator
/**
* @desc The Initial-IMS-Charging-Identifier send template
* @param p_aVP_Data Holds the Initial IMS Charging Identifier (ICID) as generated by a IMS node for the initial SIP session created for IMS service continuity
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.79A Initial-IMS-Charging-Identifier AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Initial_IMS_Charging_Identifier_AVP m_initial_IMS_Charging_Identifier(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_initial_IMS_Charging_Identifier_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_initial_IMS_Charging_Identifier
/**
* @desc The Outgoing-Session-Id send template
* @param p_aVP_Data Contains the SIP Call ID of the outgoing leg, as defined in RFC 3261
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.128A Outgoing-Session-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Outgoing_Session_Id_AVP m_outgoing_Session_Id(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_outgoing_Session_Id_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_outgoing_Session_Id
/**
* @desc The Low-Priority-Indicator send template
* @param p_aVP_Data Indicates if the PDN connection has a low aVP_Data, i.e. for Machine Type Communications
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.97A Low-Priority-Indicator AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Low_Priority_Indicator_AVP m_low_Priority_Indicator(
in template (value) Low_Priority_Indicator p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_low_Priority_Indicator_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_low_Priority_Indicator
/**
* @desc The Local-GW-Inserted-Indication send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Indicates whether the IP realm used for the SDP media component is the Default IP realm or not
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.80A IP-Realm-Default-Indication AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) IP_Realm_Default_Indication_AVP m_ip_Realm_Default_Indication(
in template (value) IP_Realm_Default_Indication p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_ip_Realm_Default_Indication_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_ip_Realm_Default_Indication
/**
* @desc The Local-GW-Inserted-Indication send template
* @param p_aVP_Data Indicates if the local GW (TrGW, IMS-AGW) is inserted or not for the SDP media component
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.92A Local-GW-Inserted-Indication AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Local_GW_Inserted_Indication_AVP m_local_GW_Inserted_Indication(
in template (value) Local_GW_Inserted_Indication p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_local_GW_Inserted_Indication_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_local_GW_Inserted_Indication
/**
* @desc The Transcoder-Inserted-Indication send template
* @param p_aVP_Data Indicates if a transcoder is inserted or not for the SDP media component
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.233A Transcoder-Inserted-Indication AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Transcoder_Inserted_Indication_AVP m_transcoder_Inserted_Indication(
in template (value) Transcoder_Inserted_Indication p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_pdp_Address_Prefix_Length_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_transcoder_Inserted_Indication
/**
* @desc The PDP-Address-Prefix-Length send template
* @param p_aVP_Data the aVP_Data length of an IPv6 typed PDP-Address AVP
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.137a PDP-Address-Prefix-Length AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) PDP_Address_Prefix_Length_AVP m_pdp_Address_Prefix_Length(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_pdp_Address_Prefix_Length_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_pdp_Address_Prefix_Length
} // End of group Rf_avps_templates_send
group Rf_avps_templates_receive {
template (present) Accounting_Record_Type_AVP mw_accounting_Record_Type(
template (present) Acc_Record_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_accounting_Record_Type_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_accounting_Record_Type
template (present) Accounting_Record_Number_AVP mw_accounting_Record_Number(
template (present) UInt32 p_aVP_Data := 3
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_accounting_Record_Number_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_accounting_Record__Number
/**
* @desc Accounting-Input-Octets receive template
* @param p_aVP_Data Number of octets transmitted during the data container recording interval, reflecting the volume counts for uplink traffic for a data flow
*/
template (present) Accounting_Input_Octets_AVP mw_accounting_Input_Octets(
template (present) UInt64 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_accounting_Input_Octets_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_accounting_Input_Octets
/**
* @desc Accounting-Output-Octets receive template
* @param p_aVP_Data Number of octets transmitted during the data container recording interval, reflecting the volume counts for downlink traffic for a data flow
*/
template (present) Accounting_Output_Octets_AVP mw_accounting_Output_Octets(
template (present) UInt64 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_accounting_Output_Octets_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_accounting_Output_Octets
/**
* @desc The Event-Type receive template
* @param p_sip_Method
* @param p_event
* @param p_aVP_Data
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.65 Event-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template Event_Type_AVP mw_event_Type(
template SIP_Method_AVP p_sip_Method := *,
template Event_AVP p_event := *,
template Expires_AVP p_aVP_Data := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_event_Type_AVP_Code, ?, c_vendId3gpp),
sip_Method := p_sip_Method,
event := p_event,
aVP_Data := p_aVP_Data
} // End of template m_wevent_Type
/**
* @desc The Event receive template
* @param p_aVP_Data Holds the content of the "Event" header
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.63 Event AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Event_AVP mw_event(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_event_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_event
/**
* @desc The Content-Type send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Holds the media type (e.g. application/sdp, text/html) of the message-body, as described in RFC 3261
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.46 Content-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Content_Type_AVP mw_content_Type(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_content_Type_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_content_Type
/**
* @desc The Content-Length send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Holds the size of the message-body, as described in RFC 3261
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.44 Content-Length AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Content_Length_AVP mw_content_Length(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_content_Length_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_content_Length
/**
* @desc The Content-Disposition receive template
* @param p_aVP_Data Indicates how the message body or a message body part is to be interpreted (e.g. session, render), as described in RFC 3261
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.43 Content-Disposition AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Content_Disposition_AVP mw_content_Disposition(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_content_Disposition_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_content_Disposition
/**
* @desc The Role-Of-Node receive template
* @param p_aVP_Data Specifies whether the IMS node (except the MRFC) is serving the calling or the called party
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.177 Role-Of-Node AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Role_Of_Node_AVP mw_role_Of_Node(
template (present) Role_Of_Node p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_role_Of_Node_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_role_Of_Node
/**
* @desc The User-Session-Id receive template
* @param p_aVP_Data Holds the session identifier
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.242 User-Session-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) User_Session_Id_AVP mw_user_Session_Id(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_user_Session_Id_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_user_Session_Id
/**
* @desc The Calling-Party-Address receive template
* @param p_aVP_Data Holds the session identifier
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.33 Calling-Party-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Calling_Party_Address_AVP mw_calling_Party_Address(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_calling_Party_Address_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_calling_Party_Address
/**
* @desc The Called-Party-Address receive template
* @param p_aVP_Data Holds the session identifier
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.32 Called-Party-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Called_Party_Address_AVP mw_called_Party_Address(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_called_Party_Address_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_called_Party_Address
/**
* @desc The Time-Stamps receive template
* @param p_sip_Request_Timestamp
* @param p_sip_Response_Timestamp
* @param p_sip_Request_Timestamp_Fraction
* @param p_sip_Response_Timestamp_Fraction
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.231 Time-Stamps AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template Time_Stamps_AVP mw_time_Stamps(
template SIP_Request_Timestamp_AVP p_sip_Request_Timestamp := *,
template SIP_Response_Timestamp_AVP p_sip_Response_Timestamp := *,
template SIP_Request_Timestamp_Fraction_AVP p_sip_Request_Timestamp_Fraction := *,
template SIP_Response_Timestamp_Fraction_AVP p_sip_Response_Timestamp_Fraction := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_time_Stamps_AVP_Code, ?, c_vendId3gpp),
sip_Request_Timestamp := p_sip_Request_Timestamp,
sip_Response_Timestamp := p_sip_Response_Timestamp,
sip_Request_Timestamp_Fraction := p_sip_Request_Timestamp_Fraction,
sip_Response_Timestamp_Fraction := p_sip_Response_Timestamp_Fraction
} // End of template mw_time_Stamps
/**
* @desc The SIP-Request-Timestamp receive template
* @param p_aVP_Data Holds the aVP_Data in UTC format of the SIP request
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.202 SIP-Request-Timestamp AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) SIP_Request_Timestamp_AVP mw_sip_Request_Timestamp(
template (present) Time p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sip_Request_Timestamp_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sip_Request_Timestamp
/**
* @desc The SIP-Response-Timestamp receive template
* @param p_aVP_Data Holds the aVP_Data in UTC format of the SIP response
*
* @see ETSI TS 132 299 V10.18.0 Clause SIP-Response-Timestamp
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) SIP_Response_Timestamp_AVP mw_sip_Response_Timestamp(
template (present) Time p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sip_Response_Timestamp_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sip_Response_Timestamp
/**
* @desc The Application-Server receive template
* @param p_aVP_Data Holds the SIP URL(s) of the AS(s) addressed during the session
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.23 Application-Server AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Application_Server_AVP mw_application_Server(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_application_Server_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_application_Server
/**
* @desc The Application-provided-Called-Party-Address receive template
* @param p_aVP_Data Holds the called party number (SIP URI, E.164), if it is determined by an application server
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.22 Application-provided-Called-Party-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Application_provided_Called_Party_Address_AVP mw_application_provided_Called_Party_Address(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_application_provided_Called_Party_Address_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_application_provided_Called_Party_Address
/**
* @desc The Inter-Operator-Identifier receive template
* @param p_originating_IOI
* @param p_terminating_IOI
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.80 Inter-Operator-Identifier AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template Inter_Operator_Identifier_AVP mw_inter_Operator_Identifier(
template Originating_IOI_AVP p_originating_IOI := *,
template Terminating_IOI_AVP p_terminating_IOI := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_inter_Operator_Identifier_AVP_Code, ?, c_vendId3gpp),
originating_IOI := p_originating_IOI,
terminating_IOI := p_terminating_IOI
} // End of template mw_inter_Operator_Identifier
/**
* @desc The Originating-IOI receive template
* @param p_aVP_Data holds the Inter Operator Identifier (IOI) for the originating network as generated by the IMS network element which takes responsibility for populating this parameter [404] in a SIP request as described in TS 24.229 [202]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.123 Originating-IOI AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Originating_IOI_AVP mw_originating_IOI(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_originating_IOI_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_originating_IOI
/**
* @desc The Terminating-IOI send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Holds the Inter Operator Identifier (IOI) for the terminating network as generated by the IMS network element which takes responsibility for populating this parameter [404] in a SIP response as described in TS 24.229 [202]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.225 TTerminatingerminating-IOI AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Terminating_IOI_AVP mw_terminating_IOI(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_terminating_IOI_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_terminating_IOI
/**
* @desc The IMS-Charging-Identifier send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Holds the IMS Charging Identifier (ICID) as generated by a IMS node for a SIP session and described in TS 24.229 [204]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.75 IMS-Charging-Identifier AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) IMS_Charging_Identifier_AVP mw_ims_Charging_Identifier(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_ims_Charging_Identifier_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_ims_Charging_Identifier
/**
* @desc The SDP-Session-Description receive template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Holds the content of the SDP line (i=, c=, b=, k=, a=, etc.) in the session description, as described in RFC 4566
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.184 SDP-Session-Description AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) SDP_Session_Description_AVP mw_sdp_Session_Description(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sdp_Session_Description_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sdp_Session_Description
/**
* @desc The SDP-Media-Name receive template
* @param p_aVP_Data Holds the content of SDP lines (i=, c=, b=, k=, a=, etc.) related to a media description, as described in RFC 4566
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.182 SDP-Media-Name AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) SDP_Media_Name_AVP mw_sdp_Media_Name(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sdp_Media_Name_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sdp_Media_Name
/**
* @desc The SDP-Media-Description receive template
* @param p_aVP_Data Holds the content of SDP lines (i=, c=, b=, k=, a=, etc.) related to a media description, as described in RFC 4566
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.181 SDP-Media-Description AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) SDP_Media_Description_AVP mw_sdp_Media_Description(
template (present) UTF8String p_aVP_Data
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sdp_Media_Description_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sdp_Media_Description
/**
* @desc The CG-Address AVP receive template
* @param p_aVP_Data Holds the IP-address of the charging gateway
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.36 CG-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) CG_Address_AVP mw_cg_Address(
template (present) Address p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_cg_Address_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_cg_Address
/**
* @desc The Incoming-Trunk-Group-ID receive template
* @param p_aVP_Data Identifies the incoming PSTN leg
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.79 Incoming-Trunk-Group-ID AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Incoming_Trunk_Group_ID_AVP mw_incoming_Trunk_Group_ID(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_incoming_Trunk_Group_ID_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_incoming_Trunk_Group_ID
/**
* @desc The Outgoing-Trunk-Group-ID receive template
* @param p_aVP_Data Identifies the outgoing PSTN leg
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.129 Outgoing-Trunk-Group-ID AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Outgoing_Trunk_Group_ID_AVP mw_outgoing_Trunk_Group_ID(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_outgoing_Trunk_Group_ID_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_outgoing_Trunk_Group_ID
/**
* @desc The Bearer-Service receive template
* @param p_aVP_Data Holds the used bearer service for the PSTN leg
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.30 Bearer-Service AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Bearer_Service_AVP mw_bearer_Service(
template (present) octetstring p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_bearer_Service_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_bearer_Service
/**
* @desc The Service-ID send template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Identifies the service the MRFC is hosting or AoC service
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.190 Service-ID AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Service_Id_AVP mw_service_Id(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_service_Id_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_service_Id
/**
* @desc The Associated-URI receive template
* @param p_aVP_Data Holds a non-barred public user identity (SIP URI or TEL URI) associated to the the public user identity under registration
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.26 Associated-URI AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Associated_URI_AVP mw_associated_URI(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_bearer_Service_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_associated_URI
/**
* @desc The Cause-Code receive template
* @param p_aVP_Data Includes the cause code value from IMS node
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.35 Cause-Code AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Cause_Code_AVP mw_cause_Code(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_cause_Code_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_cause_Code
/**
* @desc The Application-Server-Information send template
* @param p_aVP_Data Holds the used bearer service for the PSTN leg
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.24 Application-Server-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Application_Server_Information_AVP mw_application_Server_Information(
template (present) Application_Server_AVP p_application_Server := ?,
template (present) Application_provided_Called_Party_Address_AVP p_application_Provided_Called_Party_Address := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_application_Server_Information_AVP_Code, ?, c_vendId3gpp),
application_Server := p_application_Server,
application_Provided_Called_Party_Address := { p_application_Provided_Called_Party_Address }
} // End of template mw_application_Server_Information
/**
* @desc The Node-Functionality receive template
* @param p_aVP_Data Holds the functionality identifier of the node
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.113 Node-Functionality AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Node_Functionality_AVP mw_node_Functionality(
template (present) Node_Functionality p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_node_Functionality_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_node_Functionality
/**
* @desc The GGSN-Address receive template
* @param p_aVP_Data Holds the IP-address of the P-GW that generated the GPRS/EPC Charging ID
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.68 GGSN-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) GGSN_Address_AVP mw_ggsn_Address(
template (present) Address p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_ggsn_Address_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_ggsn_Address
/**
* @desc The Service-Specific-Data receive template
* @param p_aVP_Data Holds the value of the Service-Specific-Data
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.194 Service-Specific-Data AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Service_Specific_Data_AVP mw_service_Specific_Data(
template (present) UTF8String p_aVP_Data
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_service_Specific_Data_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_service_Specific_Data
/**
* @desc The Originator receive template
* @param p_aVP_Data Indicates the originating party of the message body
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.124 Originator AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Originator_AVP mw_originator(
template (present) Originator p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_service_Specific_Data_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_originator
/**
* @desc The PS-Append-Free-Format-Data receive template
* @param p_aVP_Data Indicates if the information sent in the PS-Free-Format-Data AVP must be appended to the PS-free-format-data stored for the online-session
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.155 PS-Append-Free-Format-Data AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) PS_Append_Free_Format_Data_AVP mw_ps_Append_Free_Format_Data(
template (present) PS_Append_Free_Format_Data p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_ps_Append_Free_Format_Data_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_ps_Append_Free_Format_Data
/**
* @desc The Time-Quota-Threshold receive template
* @param p_aVP_Data Contains a threshold value in seconds
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.229 Time-Quota-Threshold AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Time_Quota_Threshold_AVP mw_time_Quota_Threshold(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_time_Quota_Threshold_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_time_Quota_Threshold
/**
* @desc The Volume-Quota-Threshold receive template
* @member aVP_Data Holds the session identifier
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.243 Volume-Quota-Threshold AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Volume_Quota_Threshold_AVP mw_volume_Quota_Threshold(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_volume_Quota_Threshold_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_volume_Quota_Threshold
/**
* @desc The Trigger-Type AVP receive template
* @member aVP_Header Header AVP
* @member aVP_Data Holds the session identifier
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.236 Trigger-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Trigger_Type_AVP mw_trigger_Type(
template (present) Trigger_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_trigger_Type_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_trigger_Type
/**
* @desc The Quota-Holding-Time receive template
* @member aVP_Header Header AVP
* @member aVP_Data Contains the quota holding time in seconds
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.160 Quota-Holding-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Quota_Holding_Time_AVP mw_quota_Holding_Time(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_quota_Holding_Time_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_quota_Holding_Time
/**
* @desc The Quota-Holding-Time receive template
* @member aVP_Header Header AVP
* @member aVP_Data Specifies the reason for usage reporting for one or more types of quota for a particular category
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.175 Reporting-Reason AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Reporting_Reason_AVP mw_reporting_Reason(
template (present) Reporting_Reason p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_reporting_Reason_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m _reporting_Reason
/**
* @desc The PS-Furnish-Charging-Information receive template
* @param p_aVP_Data Holds online charging session specific data
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.156 PS-Free-Format-Data AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) PS_Free_Format_Data_AVP mw_ps_Free_Format_Data(
template (present) octetstring p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_ps_Free_Format_Data_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template PS_Free_Format_Data
/**
* @desc The PS-Furnish-Charging-Information receive template
* @param p_threeGPP_Charging_Id
* @param p_ps_Append_Free_Format_Data
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.157 PS-Furnish-Charging-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) PS_Furnish_Charging_Information_AVP mw_ps_Furnish_Charging_Information(
template (present) ThreeGPP_Charging_Id_AVP p_threeGPP_Charging_Id := ?,
template (present) PS_Free_Format_Data_AVP p_ps_Free_Format_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_ps_Furnish_Charging_Information_AVP_Code, ?, c_vendId3gpp),
threeGPP_Charging_Id := p_threeGPP_Charging_Id,
ps_Free_Format_Data := p_ps_Free_Format_Data,
ps_Append_Free_Format_Data := *
} // End of template mw_ps_Furnish_Charging_Information
/**
* @desc The Quota-Consumption-Time receive template
* @param p_aVP_Data Contains an idle traffic aVP_Data aVP_Data in seconds
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.159 Quota-Consumption-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Quota_Consumption_Time_AVP mw_quota_Consumption_Time(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_quota_Consumption_Time_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_quota_Consumption_Time
/**
* @desc The Media-Initiator-Flag receive template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Contains an idle traffic aVP_Data aVP_Data in seconds
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.101 Media-Initiator-Flag AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Media_Initiator_Flag_AVP mw_media_Initiator_Flag(
template (present) Media_Initiator_Flag p_aVP_Data
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_media_Initiator_Flag_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_media_Initiator_Flag
/**
* @desc The Expires receive template
* @param p_aVP_Data Holds the content of the "Expires" header
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.66 Expires AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Expires_AVP mw_expires(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_expires_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_expires
/**
* @desc The Message-Body receive template
* @param p_content_Type
* @param p_content_Length
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.103 Message-Body AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Message_Body_AVP mw_message_Body(
template (present) Content_Type_AVP p_content_Type := ?,
template (present) Content_Length_AVP p_content_Length := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_message_Body_AVP_Code, ?, c_vendId3gpp),
content_Type := p_content_Type,
content_Length := p_content_Length,
content_Disposition := *,
originator := *
} // End of template mw_message_Body
/**
* @desc The WAG-Address receive template
* @param p_aVP_Data Address and contains the WAG IP address
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.244 WAG-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) WAG_Address_AVP mw_wag_Address(
template (present) Address p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_wag_PLMN_Ids_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_wag_Address
/**
* @desc The WAG-PLMN-Ids receive template
* @param p_aVP_Data Contains the WAG PLMN id (MCC and MNC)
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.245 WAG-PLMN-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) WAG_PLMN_Id_AVP mw_wag_PLMN_Ids(
template (present) octetstring p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_wag_PLMN_Ids_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_wag_PLMN_Ids
/**
* @desc The WLAN-Radio-Container receive template
* @param p_operator_Name
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.247 WLAN-Radio-Container AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) WLAN_Radio_Container_AVP mw_wlan_Radio_Container(
template (present) Operator_Name_AVP p_operator_Name := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_wlan_Radio_Container_AVP_Code, ?, c_vendId3gpp),
operator_Name := p_operator_Name,
location_Data := *,
location_Information := *,
wlan_Technology := *
} // End of template mw_wlan_Radio_Container
/**
* @desc The PDG-Address receive template
* @param p_aVP_Data Address and contains the UE"s local IP address
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.250 WLAN-UE-Local-IPAddress AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) WLAN_UE_Local_IPAddress_AVP mw_wlan_UE_Local_IPAddress(
template (present) Address p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_wlan_UE_Local_IPAddress_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_wlan_UE_Local_IPAddress
/**
* @desc The PDG-Address receive template
* @param p_aVP_Data Address and contains the PDG IP address
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.244 PDG-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) PDG_Address_AVP mw_pdg_Address(
template (present) Address p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_pdg_Address_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_pdg_Address
/**
* @desc The PDG-Charging-Id receive template
* @param p_aVP_Data Contains the charging identifier generated by the PDG for the tunnel
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.135 PDG-Charging-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) PDG_Charging_Id_AVP mw_pdg_Charging_Id(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_pdg_Charging_Id_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_pdg_Charging_Id
/**
* @desc Unit-Quota-Threshold receive template
* @param p_aVP_Data Threshold value in service specific units
*/
template (present) Unit_Quota_Threshold_AVP mw_unit_Quota_Threshold(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_unit_Quota_Threshold_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_unit_Quota_Threshold
/**
* @desc The Called-Asserted-Identity send template
* @param p_aVP_Data Holds the address (Public User ID: SIP URI, E.164, etc.) of the finally asserted called party
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.31 Called-Asserted-Identity AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Called_Asserted_Identity_AVP mw_called_Asserted_Identity(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_called_Asserted_Identity_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_called_Asserted_Identity
/**
* @desc The Requested-Party-Address receive template
* @param p_aVP_Data Holds the address (SIP URI or TEL URI) of the party (Public User ID or Public Service ID) to whom the SIP transaction was originally posted
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.176 Requested-Party-ARequested-Party-AddressRequested-Party-Addressddress AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Requested_Party_Address_AVP mw_requested_Party_Address(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_requested_Party_Address_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_requested_Party_Address
/**
* @desc Service-Generic-Information send template
* @param p_application_Server_ID
* @param p_application_Service_Type
* @param p_application_Session_ID
* @param p_delivery_Status
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.191 Service-Generic-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
* @see OMA-DDS-Charging_Data-V1_0-20110201-A
*/
template Service_Generic_Information_AVP mw_service_Generic_Information(
template Application_Server_ID_AVP p_application_Server_ID := *,
template Application_Service_Type_AVP p_application_Service_Type := *,
template Application_Session_ID_AVP p_application_Session_ID := *,
template Delivery_Status_AVP p_delivery_Status := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_service_Generic_Information_AVP_Code, ?, c_vendId3gpp),
application_Server_ID := p_application_Server_ID,
application_Service_Type := p_application_Service_Type,
application_Session_ID := p_application_Session_ID,
delivery_Status := p_delivery_Status
} // End of template mw_service_Generic_Information
/**
* @desc Service-Specific-Type receive template
* @param p_aVP_Data Holds the type of the Service-Specific-Data
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.196 Service-Specific-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Service_Specific_Type_AVP mw_service_Specific_Type(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_service_Specific_Type_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_service_Specific_Type
/**
* @desc The PDP-Context-Type receive template
* @param p_reason Contains the reason for closing a container and the addition of a new container. The AVP may take the following values
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.138 PDP-Context-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) PDP_Context_Type_AVP mw_pdp_Context_Type(
template (present) PDP_Context_Type p_reason := ?
) :={
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_pdp_Context_Type_AVP_Code, ?, c_vendId3gpp),
reason := p_reason
} // End of template mw_pdp_Context_Type
/**
* @desc The Trigger receieve template
* @param p_trigger_Type Holds the trigger types
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.235 Trigger AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Trigger_AVP mw_trigger(
template (present) Trigger_Type_AVP p_trigger_Type := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_trigger_AVP_Code, ?, c_vendId3gpp),
trigger_Type := { p_trigger_Type }
} // End of template mw_trigger
/**
* @desc The Trigger receieve template without trigger type
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.235 Trigger AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Trigger_AVP mw_reseted_trigger := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_trigger_AVP_Code, ?, c_vendId3gpp),
trigger_Type := { }
} // End of template mw_reseted_trigger
/**
* @desc Base-Time-Interval AVP receive template
* @param p_reason contains the length of the base aVP_Data interval, for controlling the consumption of aVP_Data quota, in seconds
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.29 Base-Time-Interval AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Base_Time_Interval_AVP mw_base_Time_Interval(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_base_Time_Interval_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_base_Time_Interval
/**
* @desc The Time-Quota-Mechanism receive template
* @param p_time_Quota_Type
* @param p_base_Time_Interval
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.228 Time-Quota-Mechanism
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template Time_Quota_Mechanism_AVP mw_time_Quota_Mechanism(
template Time_Quota_Type_AVP p_time_Quota_Type := *,
template Base_Time_Interval_AVP p_base_Time_Interval := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_time_Quota_Mechanism_AVP_Code, ?, c_vendId3gpp),
time_Quota_Type := p_time_Quota_Type,
base_Time_Interval := p_base_Time_Interval
} // End of template mw_time_Quota_Mechanism
/**
* @desc The SGSN-Address receive template
* @param p_aVP_Data Holds the IP-address of the SGSN/Serving Node that was used during a report
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.199 SGSN-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) SGSN_Address_AVP mw_sgsn_Address(
template (present) Address p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sgsn_Address_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sgsn_Address
/**
* @desc The 7.2.248 WLAN-Session-Id receive template
* @param p_aVP_Data Contains the charging id generated by the AAA Server for the session
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.248 WLAN-Session-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) WLAN_Session_Id_AVP mw_wlan_Session_Id(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_wlan_Session_Id_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_wlan_Session_Id
/**
* @desc The Time-Quota-Type receive template
* @param p_aVP_Data Indicate which aVP_Data quota consumption mechanism shall be used for the associated Rating Group
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.230 Time-Quota-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Time_Quota_Type_AVP mw_time_Quota_Type(
template (present) Time_Quota_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_time_Quota_Type_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_time_Quota_Type
/**
* @desc The Offline-Charging receive template
* @param p_quota_Consumption_Time
* @param p_time_Quota_Mechanism
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.121 Offline-Charging AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template Offline_Charging_AVP mw_offline_Charging(
template Quota_Consumption_Time_AVP p_quota_Consumption_Time := *,
template Time_Quota_Mechanism_AVP p_time_Quota_Mechanism := *,
template Envelope_Reporting_AVP p_envelope_Reporting := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_offline_Charging_AVP_Code, ?, c_vendId3gpp),
quota_Consumption_Time := p_quota_Consumption_Time ifpresent,
time_Quota_Mechanism := p_time_Quota_Mechanism ifpresent,
envelope_Reporting := *,
multiple_Services_Credit_Control := *,
aVP_Type := *
} // End of template mw_offline_Charging
/**
* @desc The Change-Time receive template
* @param p_aVP_Data EPC Charging: holds the aVP_Data in UTC format when the volume counts associated to the IP-CAN bearer, or the service data container, is closed and reported due to Charging condition change
* MMTel Charging: holds the aVP_Data in UTC format and it is a aVP_Data stamp that defines the moment when the conference participant has an action
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.38 Change-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Change_Time_AVP mw_change_Time(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_change_Time_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_change_Time
/**
* @desc The Change-Condition receive template
* @param p_aVP_Data Holds information if the SDP media component was of type SDP offer or SDP answer
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.186 SDP-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) SDP_Type_AVP mw_sdp_Type(
template (present) SDP_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sdp_Type_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sdp_Type
/**
* @desc The Change-Condition receive template
* @param p_aVP_Data Indicates the change in charging condition
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.37 Change-Condition AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Change_Condition_AVP mw_change_Condition(
template (present) Change_Condition p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_change_Condition_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_change_Condition
/**
* @desc Alternate-Charged-Party-Address receive template
* @param p_aVP_Data Holds the address (SIP URI or TEL URI) of the party (Public User ID or Public Service ID) who initiates the media action, like adding/removing, connecting/disconnecting the media
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.12 Alternate-Charged-Party-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Media_Initiator_Party_AVP mw_media_Initiator_Party(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_media_Initiator_Party_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_media_Initiator_Party
/**
* @desc Alternate-Charged-Party-Address receive template
* @param p_aVP_Data Holds the address of the alternate charged party determined by an AS at IMS session initiation
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.12 Alternate-Charged-Party-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Alternate_Charged_Party_Address_AVP mw_alternate_Charged_Party_Address(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_alternate_Charged_Party_Address_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_alternate_Charged_Party_Address
/**
* @desc IMS-Communication-Service-Identifier receive template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Holds the IMS Communication Service Identifier (ICSI) as contained in the P-Asserted-Service header of a SIP request to identify an IMS Communication Service as defined in TS 24.229 [202]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.76 IMS-Communication-Service-Identifier AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) IMS_Communication_Service_Identifier_AVP mw_ims_Communication_Service_Identifier(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_ims_Communication_Service_Identifier_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_ims_Communication_Service_Identifier
/**
* @desc The Access-Network-Information receive template
* @param p_aVP_Header Header AVP
* @param p_aVP_Data Indicates the SIP P-header "P-Access-Network-Information"
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.1 Access-Network-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Access_Network_Information_AVP mw_access_Network_Information(
template (present) octetstring p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_access_Network_Information_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_access_Network_Information
/**
* @desc Envelope receive template
* @param p_envelope_Start_Time
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.59 Envelope AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template Envelope_AVP mw_envelope(
template (present) Envelope_Start_Time_AVP p_envelope_Start_Time :=?,
template Envelope_End_Time_AVP p_envelope_End_Time :=*,
template CC_Total_Octets_AVP p_cc_Total_Octets := *,
template CC_Input_Octets_AVP p_cc_Input_Octets := *,
template CC_Output_Octets_AVP p_cc_Output_Octets := *,
template CC_Service_Specific_Units_AVP p_cc_Service_Specific_Units := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_envelope_AVP_Code, ?, c_vendId3gpp),
envelope_Start_Time := p_envelope_Start_Time,
envelope_End_Time := p_envelope_End_Time,
cC_Total_Octets := p_cc_Total_Octets,
cC_Input_Octets := p_cc_Input_Octets,
cC_Output_Octets := p_cc_Output_Octets,
cC_Service_Specific_Units := p_cc_Service_Specific_Units,
aVP_Type := *
} // End of template mw_envelope
/**
* @desc The Envelope-End-Time receive template
* @param p_aVP_Data Indicate the time of the end of the time envelope
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.62 Envelope-End-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Envelope_End_Time_AVP mw_envelope_End_Time(
template (present) Time p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_envelope_End_Time_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_envelope_End_Time
/**
* @desc The Envelope-Reporting receive template
* @param p_aVP_Data Indicate whether the client shall report the start and end of each aVP_Data envelope, in those cases in which quota is consumed in envelopes
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.61 Envelope-Reporting AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Envelope_Reporting_AVP mw_envelope_Reporting(
template (present) Envelope_Reporting p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_envelope_Reporting_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_envelope_Reporting
/**
* @desc The Envelope-Start-Time receive template
* @param p_aVP_Data Indicate the time of the packet of user data which caused the time envelope to start
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.62 Envelope-Start-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Envelope_Start_Time_AVP mw_envelope_Start_Time(
template (present) Time p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_envelope_Start_Time_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // Start of template mw_envelope_Start_Time
/**
* @desc The SDP-TimeStamps receive template
* @param p_sdp_Offer_Timestamp_AVP
* @param p_sdp_Answer_Timestamp_AVP
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.185 SDP-TimeStamps AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template SDP_TimeStamps_AVP mw_sdp_TimeStamps(
template SDP_Offer_Timestamp_AVP p_sdp_Offer_Timestamp := *,
template SDP_Answer_Timestamp_AVP p_sdp_Answer_Timestamp := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sdp_TimeStamps_AVP_Code, ?, c_vendId3gpp),
sdp_Offer_Timestamp := p_sdp_Offer_Timestamp,
sdp_Answer_Timestamp := p_sdp_Answer_Timestamp
} // End of template mw_sdp_TimeStamps
/**
* @desc The SDP-Offer-Timestamp receive template
* @param p_aVP_Data Holds the aVP_Data in UTC format of the SDP offer
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.183 SDP-Offer-Timestamp AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) SDP_Offer_Timestamp_AVP mw_sdp_Offer_Timestamp(
template (present) Time p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sdp_Offer_Timestamp_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sdp_Offer_Timestamp
/**
* @desc The SDP-Answer-Timestamp receive template
* @param p_aVP_Data Holds the aVP_Data in UTC format of the SDP offer
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.179 SDP-Answer-Timestamp AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) SDP_Answer_Timestamp_AVP mw_sdp_Answer_Timestamp(
template (present) Time p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sdp_Answer_Timestamp_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sdp_Answer_Timestamp
/**
* @desc The AF-Correlation-Information receive template
* @param p_af_Charging_Identifier
* @param p_flows Flow identifiers generated by the AF and received by P-GW over Rx/Gx as defined in TS 29.214 [214] and TS 29.212 [215]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.11 AF-Correlation-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template AF_Correlation_Information_AVP mw_af_Correlation_Information(
template AF_Charging_Identifier_AVP p_af_Charging_Identifier := *,
template AF_Correlation_Information_AVP.flows p_flows := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_af_Correlation_Information_AVP_Code, ?, c_vendId3gpp),
af_Charging_Identifier := p_af_Charging_Identifier,
flows := p_flows
} // End of template mw_af_Correlation_Information
/**
* @desc The Remaining-Balance receive template
* @param p_unit_Value
* @param p_currency_Code
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.172 Remaining-Balance AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Remaining_Balance_AVP mw_remaining_Balance(
template (present) Unit_Value_AVP p_unit_Value := ?,
template (present) Currency_Code_AVP p_currency_Code := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_remaining_Balance_AVP_Code, ?, c_vendId3gpp),
unit_Value := p_unit_Value,
currency_Code := p_currency_Code
} // End of template mw_remaining_Balance
/**
* @desc The Refund-Information receive template
* @param p_aVP_Data Conveys relevant information for the OCS application relative to refund mechanism
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.171 Refund-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Refund_Information_AVP mw_refund_Information(
template (present) octetstring p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_carrier_Select_Routing_Information_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_refund_Information
/**
* @desc The Carrier-Select-Routing-Information receive template
* @param p_aVP_Data Holds information on carrier selection performed by S-CSCF/AS
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.34 Carrier-Select-Routing-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Carrier_Select_Routing_Information_AVP mw_carrier_Select_Routing_Information(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_carrier_Select_Routing_Information_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_carrier_Select_Routing_Information
/**
* @desc The Number-Portability-Routing-Information receive template
* @param p_aVP_Data Holds information on carrier selection performed by S-CSCF/AS
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.120 Number-Portability-Routing-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Number_Portability_Routing_Information_AVP mw_number_Portability_Routing_Information(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_number_Portability_Routing_Information_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_number_Portability_Routing_Information
/**
* @desc The Low-Balance-Indication receive template
* @param p_aVP_Data Indicates if the subscriber balance went below a designated aVP_Data by its account
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.97 Low-Balance-Indication AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Low_Balance_Indication_AVP mw_low_Balance_Indication(
template (present) Low_Balance_Indication p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_low_Balance_Indication_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_low_Balance_Indication
/**
* @desc The Node-Id receive template
* @param p_aVP_Data Operator configurable identifier string for the node
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.114 Node-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Node_Id_AVP mw_node_Id(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_node_Id_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_node_Id
/**
* @desc The Start-Time receive template
* @param p_aVP_Data The aVP_Data in UTC format which represents the start of a user session at the S-GW/P-GW
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.215 Start-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Start_Time_AVP mw_start_Time(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_start_Time_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_start_Time
/**
* @desc The Stop-Time receive template
* @param p_aVP_Data The the aVP_Data in UTC format which represents the termination of a user session at the S-GW/P-GW
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.216 Stop-Time AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Stop_Time_AVP mw_stop_Time(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_stop_Time_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_stop_Time
/**
* @desc The Time-First-Usage receive template
* @param p_aVP_Data The the aVP_Data in UTC format for the first IP packet to be transmitted and mapped to the current service data container
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.226 Time-First-Usage AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Time_First_Usage_AVP mw_time_First_Usage(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_time_First_Usage_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_time_First_Usage
/**
* @desc The Time-Last-Usage receive template
* @param p_aVP_Data The the aVP_Data in UTC format for the last IP packet to be transmitted and mapped to the current service data container
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.227 Time-Last-Usage AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Time_Last_Usage_AVP mw_time_Last_Usage(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_time_Last_Usage_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_time_Last_Usage
/**
* @desc The Time-Last-Usage receive template
* @param p_aVP_Data Holds the effective used aVP_Data within the service data container reporting interval.
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.232 Time-Usage AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Time_Usage_AVP mw_time_Usage(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_time_Usage_Usage_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_time_Usage
/**
* @desc The Traffic-Data-Volumes receive template
* @param p_accounting_Input_Octets
* @param p_accounting_Output_Octets
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.233 Traffic-Data-Volumes AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Traffic_Data_Volumes_AVP mw_traffic_Data_Volumes(
template (present) Accounting_Input_Octets_AVP p_accounting_Input_Octets := ?,
template (present) Accounting_Output_Octets_AVP p_accounting_Output_Octets := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_traffic_Data_Volumes_AVP_Code, ?, c_vendId3gpp),
qos_Information := *,
accounting_Input_Octets := p_accounting_Input_Octets,
accounting_Output_Octets := p_accounting_Output_Octets,
change_condition := *,
change_Time := *,
threeGPP_User_Location_Info := *,
user_CSG_Information := *
} // End of template mw_traffic_Data_Volumes
/**
* @desc The Serving-Node-Type receive template
* @param p_aVP_Data The type of Serving Node
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.198 Serving-Node-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Serving_Node_Type_AVP mw_serving_Node_Type(
in template (present) Serving_Node_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_serving_Node_Type_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_serving_Node_Type
/**
* @desc The PDN-Connection-Charging-ID receive template
* @param p_aVP_Data The charging identifier to identify different records belonging to same PDN connection
*/
template (present) PDN_Connection_Charging_ID_AVP mw_pdn_Connection_Charging_ID(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_pdn_Connection_Charging_ID_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_pdn_Connection_Charging_ID
/**
* @desc The Application-Server-ID send template
* @param p_aVP_Data The Application Server identifier
*
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Application_Server_ID_AVP mw_application_Server_ID(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_serving_Node_Type_AVP_Code, ?, ?),
aVP_Data := p_aVP_Data
} // End of template mw_application_Server_ID
/**
* @desc The Application-Service-Type receive template
* @param p_aVP_Data
*
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Application_Service_Type_AVP mw_application_Service_Type(
template (present) Application_Service_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_serving_Node_Type_AVP_Code, ?, ?),
aVP_Data := p_aVP_Data
} // End of template mw_application_Service_Type
/**
* @desc The Application-Session-ID receive template
* @param p_aVP_Data
*
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Application_Session_ID_AVP mw_application_Session_ID(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_serving_Node_Type_AVP_Code, ?, ?),
aVP_Data := p_aVP_Data
} // End of template mw_application_Session_ID
/**
* @desc The Delivery_Status receive template
* @param p_aVP_Data
*
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Delivery_Status_AVP mw_delivery_Status(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_serving_Node_Type_AVP_Code, ?, ?),
aVP_Data := p_aVP_Data
} // End of template mw_delivery_Status
/**
* @desc The Accumulated-Cost receive template
* @param p_value_Digits
* @param p_exponent
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.3 Accumulated-Cost AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template Accumulated_Cost_AVP mw_accumulated_Cost(
template (present) Value_Digits_AVP p_value_Digits := ?,
template Exponent_AVP p_exponent := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_accumulated_Cost_AVP_Code, ?, c_vendId3gpp),
value_Digits := p_value_Digits,
exponent := p_exponent
} // End of template mw_accumulated_Cost
/**
* @desc The AoC-Information receive template
* @param p_aoc_Cost_Information_AVP Holds accumulated and incremental cost information for the AoC service
* @param p_tariff_Information_AVP Holds a tariff definition either from the local provider or from 3rd party provider
* @param p_aoc_Subscription_Information Holds the subscription and formatting parameters received from HSS
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.15 AoC-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template AoC_Information_AVP mw_aoc_Information(
template AoC_Cost_Information_AVP p_aoc_Cost_Information := *,
template Tariff_Information_AVP p_tariff_Information := *,
template AoC_Subscription_Information_AVP p_aoc_Subscription_Information := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_aoc_Information_AVP_Code, ?, c_vendId3gpp),
aoc_Cost_Information := p_aoc_Cost_Information,
tariff_Information := p_tariff_Information,
aoc_Subscription_Information := p_aoc_Subscription_Information
} // End of template mw_aoc_Information
/**
* @desc The AoC-Cost-Information receive template
* @param p_accumulated_Cost Holds the accumulated cost for the ongoing session
* @param p_incremental_Cost Holds the incremental cost since last AoC interaction for the ongoing session
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.13 AoC-Cost-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template AoC_Cost_Information_AVP mw_aoc_Cost_Information(
template Accumulated_Cost_AVP p_accumulated_Cost := *,
template AoC_Cost_Information_AVP.incremental_Cost p_incremental_Cost := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_aoc_Cost_Information_AVP_Code, ?, c_vendId3gpp),
accumulated_Cost := p_accumulated_Cost,
incremental_Cost := p_incremental_Cost,
currency_Code := * // Not used in 3GPP
} // End of template mw_aoc_Cost_Information
/**
* @desc The AoC-Request-Type receive template
* @param p_aoc_Request_Type Tags if the client is looking for AoCI in conjunction to the Request-Type and Request-Action AVPs
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.16 AoC-Request-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) AoC_Request_Type_AVP mw_aoc_Request_Type(
template (present) AoC_Request_Type p_aoc_Request_Type := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_aoc_Request_Type_AVP_Code, ?, c_vendId3gpp),
aoc_Request_Type := p_aoc_Request_Type
} // End of template mw_aoc_Request_Type
/**
* @desc The Current-Tariff receive template
* @param p_scale_Factor Holds simple multiplication factor in the same format as Unit-Value
* @param p_rate_Element Holds simple rate element of one dimension
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.47 Current-Tariff AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template Current_Tariff_AVP mw_current_Tariff(
template Scale_Factor_AVP p_scale_Factor := *,
template Current_Tariff_AVP.rate_Element p_rate_Element := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_current_Tariff_AVP_Code, ?, c_vendId3gpp),
currency_Code := *, // Not used in 3GPP
scale_Factor := p_scale_Factor,
rate_Element := p_rate_Element
} // End of template mw_current_Tariff
/**
* @desc The Next-Tariff receive template
* @param p_scale_Factor Holds simple multiplication factor in the same format as Unit-Value
* @param p_rate_Element Holds simple rate element of one dimension
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.112 Next-Tariff AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template Next_Tariff_AVP mw_next_Tariff(
template Scale_Factor_AVP p_scale_Factor := *,
template Next_Tariff_AVP.rate_Element p_rate_Element := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_next_Tariff_AVP_Code, ?, c_vendId3gpp),
currency_Code := *, // Not used in 3GPP
scale_Factor := p_scale_Factor,
rate_Element := p_rate_Element
} // End of template mw_next_Tariff
/**
* @desc The Rate-Element AVP receive template
* @param p_cc_Unit_Type_AVP
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.161 Rate-Element AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Rate_Element_AVP mw_rate_Element(
template (present) CC_Unit_Type_AVP p_cc_Unit_Type := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_rate_Element_AVP_Code, ?, c_vendId3gpp),
cc_Unit_Type := p_cc_Unit_Type,
charge_Reason_Code := *,
unit_Value := *,
unit_Cost := *,
unit_Quota_Threshold := *
} // End of template mw_rate_Element
/**
* @desc The Scale-Factor AVP receive template
* @param p_value_Digits
* @param p_exponent
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.178 Scale-Factor AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template Scale_Factor_AVP mw_scale_Factor(
template (present) Value_Digits_AVP p_value_Digits := ?,
template Exponent_AVP p_exponent := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_scale_Factor_AVP_Code, ?, c_vendId3gpp),
value_Digits := p_value_Digits,
exponent := p_exponent
} // End of template mw_scale_Factor
/**
* @desc The Tariff-Information send template
* @param p_current_Tariff Holds tariff information
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.223 Tariff-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Tariff_Information_AVP mw_tariff_Information(
template (present) Current_Tariff_AVP p_current_Tariff := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_tariff_Information_AVP_Code, ?, c_vendId3gpp),
current_Tariff := p_current_Tariff,
tariff_Time_Change := *,
next_Tariff := *
} // End of template mw_tariff_Information
/**
* @desc The Unit-Cost receive template
* @param p_value_Digits
* @param p_exponent
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.239 Unit-Cost AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template Unit_Cost_AVP mw_unit_Cost(
template (present) Value_Digits_AVP p_value_Digits := ?,
template Exponent_AVP p_exponent := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_unit_Cost_AVP_Code, ?, c_vendId3gpp),
value_Digits := p_value_Digits,
exponent := p_exponent
} // End of template mw_unit_Cost
/**
* @desc The Local-Sequence-Number receive template
* @param p_seq_number Holds the service data container sequence number
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.93 Local-Sequence-Number AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Local_Sequence_Number_AVP mw_local_Sequence_Number(
template (present) UInt32 p_seq_number := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_local_Sequence_Number_AVP_Code, ?, c_vendId3gpp),
seq_number := p_seq_number
} // End of template mw_local_Sequence_Number
/**
* @desc The Incremental-Cost receive template
* @param p_value_Digits
* @param p_exponent
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.70 Incremental-Cost AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template Incremental_Cost_AVP mw_incremental_Cost(
template (present) Value_Digits_AVP p_value_Digits := ?,
template Exponent_AVP p_exponent := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_incremental_Cost_AVP_Code, ?, c_vendId3gpp),
value_Digits := p_value_Digits,
exponent := p_exponent
} // End of template mw_incremental_Cost
/**
* @desc The SGW-Change AVP receive template
* @param p_aVP_Data Accounting Request type
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.200 SGW-Change AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) SGW_Change_AVP mw_sgw_Change(
template (present) SGW_Change p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sgw_Change_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sgw_Change
/**
* @desc The Charging-Characteristics-Selection-Mode receive template
* @param p_aVP_Data Indicates how the applied Charging-Characteristics was selected
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.39A Charging-Characteristics-Selection-Mode AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) Charging_Characteristics_Selection_Mode_AVP mw_charging_Characteristics_Selection_Mode(
template (present) Charging_Characteristics_Selection_Mode p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_charging_Characteristics_Selection_Mode_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_charging_Characteristics_Selection_Mode
/**
* @desc The SGW-Address receive template
* @param p_aVP_Data Holds the IP-address of the S-GW Node
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.199A SGW-Address AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
template (present) SGW_Address_AVP mw_sgw_Address(
template (present) Address p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sgw_Address_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sgw_Address
/**
* @desc The Dynamic-Address-Flag receive template
* @param p_aVP_Data Indicates whether the PDP context/PDN address is statically or dynamically allocated
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.57 Dynamic-Address-Flag AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Dynamic_Address_Flag_AVP mw_dynamic_Address_Flag(
template (present) Dynamic_Address_Flag p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_dynamic_Address_Flag_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_dynamic_Address_Flag
/**
* @desc The Dynamic-Address-Flag-Extension receive template
* @param pdpAddressAllocation indicates that the IPv4 PDN address has been dynamically allocated for that particular IP CAN bearer (PDN connection) of PDN type IPv4v6, and the dynamic IPv6 address is indicated in Dynamic Address Flag
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.57A Dynamic-Address-Flag-Extension AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Dynamic_Address_Flag_Extension_AVP mw_dynamic_Address_Flag_Extension(
template (present) Dynamic_Address_Flag_Extension p_pdpAddressAllocation := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_dynamic_Address_Flag_Extension_AVP_Code, ?, c_vendId3gpp),
pdpAddressAllocation := p_pdpAddressAllocation
} // End of template mw_dynamic_Address_Flag_Extension
/**
* @desc The SIP-Request-Timestamp-Fraction receive template
* @param p_aVP_Data Holds the miliseconds fraction in relation to SIP-Request-Timestamp
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.203 SIP-Request-Timestamp-Fraction AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) SIP_Request_Timestamp_Fraction_AVP mw_sip_Request_Timestamp_Fraction(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sip_Request_Timestamp_Fraction_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sip_Request_Timestamp_Fraction
/**
* @desc The SIP-Response-Timestamp-Fraction receive template
* @param p_aVP_Data Holds the miliseconds fraction in relation to SIP-Response-Timestamp
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.205 SIP-Response-Timestamp-Fraction AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) SIP_Response_Timestamp_Fraction_AVP mw_sip_Response_Timestamp_Fraction(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sip_Response_Timestamp_Fraction_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_sip_Response_Timestamp_Fraction
/**
* @desc The Online-Charging-Flag receive template
* @param p_aVP_Data Indicates the Online Charging Request was sent based on the provided ECF address from the SIP P-header "P-Charging-Function-Addresses"
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.122 Online-Charging-Flag AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Online_Charging_Flag_AVP mw_online_Charging_Flag(
template (present) Online_Charging_Flag p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_online_Charging_Flag_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_online_Charging_Flag
/**
* @desc The Tariff-XML send template
* @param p_aVP_Data Holds the XML body describing the tariff/add-on charge information exchanged during the SIP transaction, as described in the TS 29.658 [222]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.224 Tariff-XML AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Tariff_XML_AVP mw_tariff_XML(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_tariff_XML_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_tariff_XML
/**
* @desc The IMSI-Unauthenticated-Flag receive template
* @param p_aVP_Data Enumerated value
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.78 IMSI-Unauthenticated-Flag AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) IMSI_Unauthenticated_Flag_AVP mw_imsi_Unauthenticated_Flag(
template (present) IMSI_Unauthenticated_Flag p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_imsi_Unauthenticated_Flag_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_imsi_Unauthenticated_Flag
/**
* @desc The Account-Expiration receive template
* @param p_aVP_Data Indicates the subscriber account expiration date and aVP_Data of day
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.2 Account-Expiration AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Account_Expiration_AVP mw_account_Expiration(
template (present) Time p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_aoc_Format_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_account_Expiration
/**
* @desc The AoC-Format receive template
* @param p_aVP_Data Holds the format on how the AoC information shall be sent to the UE
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.14 AoC-Format AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) AoC_Format_AVP mw_aoc_Format(
template (present) AoC_Format p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_aoc_Format_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_aoc_Format
/**
* @desc The AoC-Service receive template
* @param p_aoc_Service_Obligatory_Type AoC Service type
* @param p_aoc_Service_Type AoC Service obligatory type
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.17 AoC-Service AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template AoC_Service_AVP mw_aoc_Service(
template AoC_Service_Obligatory_Type_AVP p_aoc_Service_Obligatory_Type := *,
template AoC_Service_Type_AVP p_aoc_Service_Type := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_aoc_Service_Obligatory_Type_AVP_Code, ?, c_vendId3gpp),
aoc_Service_Obligatory_Type := p_aoc_Service_Obligatory_Type,
aoc_Service_Type := p_aoc_Service_Type
} // End of template mw_aoc_Service
/**
* @desc The AoC-Service-Obligatory-Type receive template
* @param p_aVP_Data Holds the information if the AoC information is binding or not
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.18 AoC-Service-Obligatory-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) AoC_Service_Obligatory_Type_AVP mw_aoc_Service_Obligatory_Type(
template (present) AoC_Service_Obligatory_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_aoc_Service_Obligatory_Type_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_aoc_Service_Obligatory_Type
/**
* @desc The AoC-Service-Type AVP receive template
* @param p_aVP_Data Defines the type of AoC information to be provided to the subscriber
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.19 AoC-Service-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) AoC_Service_Type_AVP mw_aoc_Service_Type(
template (present) AoC_Service_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_aoc_Service_Type_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_aoc_Service_Type
/**
* @desc The AoC-Subscription-Information receive template
* @param p_aoc_Service
* @param p_aoc_Format
* @param p_preferred_AoC_Currency
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.20 AoC-Subscription-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template AoC_Subscription_Information_AVP mw_aoc_Subscription_Information(
template AoC_Subscription_Information_AVP.aoc_Service p_aoc_Service := *,
template AoC_Format_AVP p_aoc_Format := *,
template Preferred_AoC_Currency_AVP p_preferred_AoC_Currency := *
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_aoc_Subscription_Information_AVP_Code, ?, c_vendId3gpp),
aoc_Service := p_aoc_Service,
aoc_Format := p_aoc_Format,
preferred_AoC_Currency := p_preferred_AoC_Currency
} // End of template mw_aoc_Subscription_Information
/**
* @desc The Preferred-AoC-Currency receive template
* @param p_aVP_Data Indicates the preferred currency code that the AoC function would like to get the AoC information
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.153 Preferred-AoC-Currency AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Preferred_AoC_Currency_AVP mw_preferred_AoC_Currency(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_preferred_AoC_Currency_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_preferred_AoC_Currency
/**
* @desc The Initial-IMS-Charging-Identifier receive template
* @param p_aVP_Data Indicates the IMS session is an IMS emergency session or IMS registration
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.76A IMS-Emergency-Indicator AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) IMS_Emergency_Indicator_AVP mw_ims_Emergency_Indicator(
template (present) IMS_Emergency_Indicator p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_initial_IMS_Charging_Identifier_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_ims_Emergency_Indicator
/**
* @desc The Initial-IMS-Charging-Identifier receive template
* @param p_aVP_Data Holds the Initial IMS Charging Identifier (ICID) as generated by a IMS node for the initial SIP session created for IMS service continuity
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.79A Initial-IMS-Charging-Identifier AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Initial_IMS_Charging_Identifier_AVP mw_initial_IMS_Charging_Identifier(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_initial_IMS_Charging_Identifier_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_initial_IMS_Charging_Identifier
/**
* @desc The Outgoing-Session-Id receive template
* @param p_aVP_Data Contains the SIP Call ID of the outgoing leg, as defined in RFC 3261
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.128A Outgoing-Session-Id AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Outgoing_Session_Id_AVP mw_outgoing_Session_Id(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_outgoing_Session_Id_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_outgoing_Session_Id
/**
* @desc The Low-Priority-Indicator receive template
* @param p_aVP_Data Indicates if the PDN connection has a low aVP_Data, i.e. for Machine Type Communications
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.97A Low-Priority-Indicator AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Low_Priority_Indicator_AVP mw_low_Priority_Indicator(
template (present) Low_Priority_Indicator p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_low_Priority_Indicator_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_low_Priority_Indicator
/**
* @desc The Local-GW-Inserted-Indication receive template
* @param p_aVP_Data Indicates whether the IP realm used for the SDP media component is the Default IP realm or not
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.80A IP-Realm-Default-Indication AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) IP_Realm_Default_Indication_AVP mw_ip_Realm_Default_Indication(
template (present) IP_Realm_Default_Indication p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_ip_Realm_Default_Indication_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_ip_Realm_Default_Indication
/**
* @desc The Local-GW-Inserted-Indication receive template
* @param p_aVP_Data Indicates if the local GW (TrGW, IMS-AGW) is inserted or not for the SDP media component
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.92A Local-GW-Inserted-Indication AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Local_GW_Inserted_Indication_AVP mw_local_GW_Inserted_Indication(
template (present) Local_GW_Inserted_Indication p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_local_GW_Inserted_Indication_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_local_GW_Inserted_Indication
/**
* @desc The Transcoder-Inserted-Indication receive template
* @param p_aVP_Data Indicates if a transcoder is inserted or not for the SDP media component
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.233A Transcoder-Inserted-Indication AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Transcoder_Inserted_Indication_AVP mw_transcoder_Inserted_Indication(
template (present) Transcoder_Inserted_Indication p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_pdp_Address_Prefix_Length_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_transcoder_Inserted_Indication
/**
* @desc The PDP-Address-Prefix-Length receive template
* @param p_aVP_Data the aVP_Data length of an IPv6 typed PDP-Address AVP
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.137a PDP-Address-Prefix-Length AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) PDP_Address_Prefix_Length_AVP mw_pdp_Address_Prefix_Length(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_pdp_Address_Prefix_Length_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_pdp_Address_Prefix_Length
/**
* @desc Service-Information AVP, receive template
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.192 Service-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template Service_Information_AVP mw_service_Information(
template (present) Service_Information_AVP.subscription_Id p_subscription_Id := ?,
template IMS_Information_AVP p_ims_Information := *,
template Service_Generic_Information_AVP p_service_Generic_Information := *
) modifies mw_service_Information_AVP_dummy := {
subscription_Id := p_subscription_Id,
ims_Information := p_ims_Information,
service_Generic_Information := p_service_Generic_Information
} // End of template mw_service_Information
/**
* @desc Service-Information AVP, receive template
* @param p_ps_Information
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.192 Service-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Service_Information_AVP mw_service_Information_PS_Information(
in template (present) PS_Information_AVP p_ps_Information := ?
) modifies mw_service_Information_AVP_dummy := {
ps_Information := p_ps_Information
} // End of template mw_service_Information_PS_Information
template (present) PS_Information_AVP mw_ps_Information(
in template (present) Offline_Charging_AVP p_offline_Charging
) modifies mw_ps_Information_AVP_dummy := {
offline_Charging := p_offline_Charging
} // End of template mw_ps_Information
} // End of group Rf_avps_templates_receive
} // End of group Rf_avps_templates
group Ro_modified_message_templates {
group Ro_request_message_templates_send {
/**
* @desc Send template for CCR
* @param p_sessionId Session identifier
* @param p_ccrBody CCR message body
*/
template (value) CCR_MSG md_cCR(
in template (value) Session_Id_AVP p_sessionId,
in template (value) CCR_Body_AVP p_ccrBody
) modifies m_CCR_dummy := {
header := m_diameterHeaderReq_dummy(CCR_E, c_applIdRo),
session_Id := p_sessionId,
cCR_Body := p_ccrBody
} // End of template md_cCR
/**
* @desc Send template for CCR
* @param p_sessionId Session identifier
* @param p_ccrBody CCR message body
* @param p_header Specific Diameter header
*/
template (value) CCR_MSG md_cCR_CmdFlags_T(
in template (value) DiameterHeader p_header,
in template (value) Session_Id_AVP p_sessionId,
in template (value) CCR_Body_AVP p_ccrBody
) modifies m_CCR_dummy := {
header := p_header,
session_Id := p_sessionId,
cCR_Body := p_ccrBody
} // End of template md_cCR_CmdFlags_T
/**
* @desc Send template for CCR message body
*/
template (omit) CCR_Body_AVP md_ccrBodyAvps_TypeOfCharging(
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm,
in template (value) Destination_Realm_AVP p_destination_Realm,
in template (value) CC_Request_Type_AVP p_cC_Request_Type,
in template (value) CC_Request_Number_AVP 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,
in template (omit) CCR_Body_AVP.multiple_Services_Credit_Control p_multiple_Services_Credit_Control := omit,
in template (omit) Multiple_Services_Indicator_AVP p_multiple_Services_Indicator := omit
) modifies m_CCR_Body_dummy := {
origin_Host := p_originHost,
origin_Realm := p_originRealm,
destination_Realm := p_destination_Realm,
auth_Application_Id := m_auth_Application_Id(4),
service_Context_Id := p_service_Context_Id,
cC_Request_Type := p_cC_Request_Type,
cC_Request_Number := p_cC_Request_Number,
requested_Action := p_requested_Action,
multiple_Services_Credit_Control := p_multiple_Services_Credit_Control,
multiple_Services_Indicator := p_multiple_Services_Indicator
} // End of template md_ccrBodyAvps_TypeOfCharging
template (omit) CCR_Body_AVP md_ccrBodyAvps_TariffChangesUsage(
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm,
in template (value) Destination_Realm_AVP p_destination_Realm,
in template (value) CC_Request_Type_AVP p_cC_Request_Type,
in template (value) CC_Request_Number_AVP 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,
in template (omit) CCR_Body_AVP.multiple_Services_Credit_Control p_multiple_Services_Credit_Control := omit,
in template (omit) Multiple_Services_Indicator_AVP p_multiple_Services_Indicator := omit
)
modifies md_ccrBodyAvps_TypeOfCharging := {
} // End of template md_ccrBodyAvps_TariffChangesUsage
/**
* @desc Send template for RAR
* @param p_sessionId Session identifier
* @param p_rarBody RAR message body
*/
template (value) RAR_MSG md_rAR(
in template (value) Session_Id_AVP p_sessionId,
in template (value) RAR_Body_AVP p_rarBody
) modifies m_RAR_dummy := {
header := m_diameterHeaderReq_dummy(RAR_E, c_applIdRo),
session_Id := p_sessionId,
rAR_Body := p_rarBody
} // End of template md_rAR
/**
* @desc Send template for RAR message body
*/
template (value) RAR_Body_AVP md_rarBodyAvps(
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm,
in template (value) Destination_Realm_AVP p_destination_Realm,
in template (value) Destination_Host_AVP p_destination_Host,
in template (value) Auth_Application_Id_AVP p_auth_Application_Id,
in template (value) Re_Auth_Request_Type_AVP p_re_Auth_Request_Type
) modifies m_RAR_Body_dummy := {
origin_Host := p_originHost,
origin_Realm := p_originRealm,
destination_Realm := p_destination_Realm,
destination_Host := p_destination_Host,
auth_Application_Id := p_auth_Application_Id,
re_Auth_Request_Type := p_re_Auth_Request_Type
} // End of template md_rarBodyAvps
/**
* @desc Send template for ASR
* @param p_sessionId Session identifier
* @param p_asrBody ASR message body
*/
template (value) ASR_MSG md_aSR(
in template (value) Session_Id_AVP p_sessionId,
in template (value) ASR_Body_AVP p_asrBody
) modifies m_ASR_dummy := {
header := m_diameterHeaderReq_dummy(ASR_E, c_applIdRo),
session_Id := p_sessionId,
aSR_Body := p_asrBody
} // End of template md_aSR
/**
* @desc Send template for ASR message body
*/
template (value) ASR_Body_AVP md_asrBodyAvps(
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm,
in template (value) Destination_Realm_AVP p_destination_Realm,
in template (value) Destination_Host_AVP p_destination_Host,
in template (value) Auth_Application_Id_AVP p_auth_Application_Id
) modifies m_ASR_Body_dummy := {
origin_Host := p_originHost,
origin_Realm := p_originRealm,
destination_Realm := p_destination_Realm,
destination_Host := p_destination_Host,
auth_Application_Id := p_auth_Application_Id
} // End of template md_asrBodyAvps
} // End of group Ro_request_message_templates_send
group Ro_answer_message_templates_send {
/**
* @desc Send template for CCA
* @param p_sessionId Session identifier
* @param p_ccaBody CCA message body
*/
template (value) CCA_MSG md_cCA(
in template (value) Session_Id_AVP p_sessionId,
in template (value) CCA_Body_AVP p_ccaBody
) modifies m_CCA_dummy := {
header := m_diameterHeaderAns_dummy(CCA_E, c_applIdRo),
session_Id := p_sessionId,
cCA_Body := p_ccaBody
} // End of template md_cCA
template (omit) CCA_Body_AVP md_ccaBodyAvps(
in template (value) Result_Code_AVP p_resultCode,
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm,
in template (value) CC_Request_Type_AVP p_cCRequestType
) modifies m_CCA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm,
auth_Application_Id := m_auth_Application_Id(4),
cC_Request_Type := p_cCRequestType,
cC_Request_Number := m_cC_Request_Number(0)
} // End of template md_ccaBodyAvps
template (value) CCA_Body_AVP md_ccaBodyAvps_ReqNumber(
in template (value) Result_Code_AVP p_resultCode,
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm,
in template (value) CC_Request_Type_AVP p_cCRequestType,
in template (value) CC_Request_Number_AVP p_cC_Request_Number
) modifies md_ccaBodyAvps := {
cC_Request_Number := p_cC_Request_Number
} // End of template md_ccaBodyAvps_ReqNumber
template (omit) CCA_Body_AVP md_ccaBodyAvps_MultipleServiceCreditControl(
in template (value) Result_Code_AVP p_resultCode,
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm,
in template (value) CC_Request_Type_AVP p_cCRequestType,
in template (value) CC_Request_Number_AVP p_cCRequestNumber,
in template (omit) CCA_Body_AVP.multiple_Services_Credit_Control p_multiple_Services_Credit_Control := omit,
in template (omit) Service_Information_AVP p_service_Information := omit,
in template (omit) Credit_Control_Failure_Handling_AVP p_credit_Control_Failure_Handling := omit,
in template (omit) Direct_Debiting_Failure_Handling_AVP p_direct_Debiting_Failure_Handling := omit
) modifies md_ccaBodyAvps := {
cC_Request_Number := p_cCRequestNumber,
multiple_Services_Credit_Control := p_multiple_Services_Credit_Control,
service_Information := p_service_Information,
credit_Control_Failure_Handling := p_credit_Control_Failure_Handling,
direct_Debiting_Failure_Handling := p_direct_Debiting_Failure_Handling
} // End of template md_ccaBodyAvps
/**
* @desc Send template for RAA
* @param p_sessionId Session identifier
* @param p_raaBody RAA message body
*/
template (value) RAA_MSG md_rAA(
template (value) Session_Id_AVP p_sessionId,
template (value) RAA_Body_AVP p_raaBody
) modifies m_RAA_dummy := {
header := m_diameterHeaderAns_dummy(RAA_E, c_applIdRo),
session_Id := p_sessionId,
rAA_Body := p_raaBody
} // End of template md_rAA
template (value) RAA_Body_AVP md_raaBodyAvps(
in template (value) Result_Code_AVP p_resultCode,
in template (value) Origin_Host_AVP p_originHost,
in template (value) Origin_Realm_AVP p_originRealm
) modifies m_RAA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm
} // End of template md_raaBodyAvps
} // End of group Ro_answer_message_templates_send
group Ro_request_message_templates_receive {
/**
* @desc Await template for CCR
* @param p_sessionId Session identifier
* @param p_ccrBody CCR message body
*/
template (present) CCR_MSG mdw_cCR(
in template (present) Session_Id_AVP p_sessionId,
in template (present) CCR_Body_AVP p_ccrBody
) modifies mw_CCR_dummy := {
header := mw_diameterHeaderReq_dummy(CCR_E, c_applIdRo),
session_Id := p_sessionId,
cCR_Body := p_ccrBody
} // End of template mdw_cCR
/**
* @desc Await template for CCR
* @param p_header Diameter header
*/
template (present) CCR_MSG mw_CCR_CmdFlags_PET(
in template (present) DiameterHeader p_header,
in template (present) Session_Id_AVP p_sessionId := ?,
in template (present) CCR_Body_AVP p_ccrBody := mw_CCR_Body_dummy
) modifies mw_CCR_dummy := {
header := p_header,
session_Id := p_sessionId,
cCR_Body := p_ccrBody
} // End of template mw_CCR_CmdFlags_PET
/**
* @desc Await template for CCR message body
*/
template CCR_Body_AVP mdw_ccrBodyAvps(
template (present) Origin_Host_AVP p_originHost,
template (present) Origin_Realm_AVP p_originRealm,
template (present) Destination_Realm_AVP p_destination_Realm,
template (present) CC_Request_Type_AVP p_cC_Request_Type,
template (present) CC_Request_Number_AVP p_cC_Request_Number,
template (present) Service_Context_Id_AVP p_service_Context_Id,
template Requested_Action_AVP p_requested_Action := *,
template CCR_Body_AVP.multiple_Services_Credit_Control p_multiple_Services_Credit_Control := *,
template Termination_Cause_AVP p_termination_Cause := *,
template Service_Information_AVP p_service_Information := *
) modifies mw_CCR_Body_dummy := {
origin_Host := p_originHost,
origin_Realm := p_originRealm,
destination_Realm := p_destination_Realm,
auth_Application_Id := mw_auth_Application_Id(4),
service_Context_Id := p_service_Context_Id,
cC_Request_Type := p_cC_Request_Type,
cC_Request_Number := p_cC_Request_Number,
requested_Action := p_requested_Action,
multiple_Services_Credit_Control := p_multiple_Services_Credit_Control,
termination_Cause := p_termination_Cause,
service_Information := p_service_Information
} // End of template mdw_ccrBodyAvps
/**
* @desc Await template for CCR message body
*/
template CCR_Body_AVP mdw_ccrBodyAvps_MultipleServiceIndicator(
template (present) Origin_Host_AVP p_originHost,
template (present) Origin_Realm_AVP p_originRealm,
template (present) Destination_Realm_AVP p_destination_Realm,
template (present) CC_Request_Type_AVP p_cC_Request_Type,
template (present) CC_Request_Number_AVP p_cC_Request_Number,
template (present) Service_Context_Id_AVP p_service_Context_Id,
template CCR_Body_AVP.multiple_Services_Credit_Control p_multiple_Services_Credit_Control := *,
template Multiple_Services_Indicator_AVP p_multiple_Services_Indicator := *
) modifies mw_CCR_Body_dummy := {
origin_Host := p_originHost,
origin_Realm := p_originRealm,
destination_Realm := p_destination_Realm,
auth_Application_Id := mw_auth_Application_Id(4),
service_Context_Id := p_service_Context_Id,
cC_Request_Type := p_cC_Request_Type,
cC_Request_Number := p_cC_Request_Number,
multiple_Services_Credit_Control := p_multiple_Services_Credit_Control,
multiple_Services_Indicator := p_multiple_Services_Indicator
} // End of template mdw_ccrBodyAvps
/**
* @desc Receive template for RAR
* @param p_sessionId Session identifier
* @param p_rarBody RAR message body
*/
template (present) RAR_MSG mdw_rAR(
template (present) Session_Id_AVP p_sessionId,
template (present) RAR_Body_AVP p_rarBody
) modifies mw_RAR_dummy := {
header := mw_diameterHeaderReq_dummy(RAR_E, c_applIdRo),
session_Id := p_sessionId,
rAR_Body := p_rarBody
} // End of template mdw_rAR
/**
* @desc Receive template for RAR message body
*/
template (present) RAR_Body_AVP mdw_rarBodyAvps(
template (present) Origin_Host_AVP p_originHost,
template (present) Origin_Realm_AVP p_originRealm,
template (present) Destination_Realm_AVP p_destination_Realm,
template (present) Destination_Host_AVP p_destination_Host,
template (present) Auth_Application_Id_AVP p_auth_Application_Id,
template (present) Re_Auth_Request_Type_AVP p_re_Auth_Request_Type
) modifies mw_RAR_Body_dummy := {
origin_Host := p_originHost,
origin_Realm := p_originRealm,
destination_Realm := p_destination_Realm,
destination_Host := p_destination_Host,
auth_Application_Id := p_auth_Application_Id,
re_Auth_Request_Type := p_re_Auth_Request_Type
} // End of template mdw_rarBodyAvps
group ASR_MSG_{
/**
* @desc Receive template for ASR
* @param p_sessionId Session identifier
* @param p_asrBody ASR message body
*/
template (present) ASR_MSG mdw_aSR(
in template (present) Session_Id_AVP p_sessionId,
in template (present) ASR_Body_AVP p_asrBody
) modifies mw_ASR_dummy := {
header := mw_diameterHeaderReq_dummy(ASR_E, c_applIdRo),
session_Id := p_sessionId,
aSR_Body := p_asrBody
} // End of template mdw_aSR
/**
* @desc Receive template for ASR message body
* @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred
* @param p_originHost Identifies the endpoint that originated the Diameter message
* @param p_originRealm Realm of the originator
* @param p_destinationRealm Destination realm
* @param p_destinationHost
*/
template (present) ASR_Body_AVP mdw_asrBodyAvps(
template (present) Origin_Host_AVP p_originHost,
template (present) Origin_Realm_AVP p_originRealm,
template (present) Destination_Realm_AVP p_destinationRealm,
template (present) Destination_Host_AVP p_destinationHost
) modifies mw_ASR_Body_dummy := {
origin_Host := p_originHost,
origin_Realm := p_originRealm,
destination_Realm := p_destinationRealm,
destination_Host := p_destinationHost,
auth_Application_Id := mw_auth_Application_Id(c_applIdRo)
} // End of template mdw_asrBodyAvps
}// End of group ASR_MSG
} // End of group Ro_request_message_templates_revceive
group Ro_answer_message_templates_receive {
template (present) CCA_MSG mw_CCA_CmdFlags_PET(
in template (present) DiameterHeader p_header
) modifies mw_CCA_dummy := {
header := p_header,
session_Id := ?,
cCA_Body := mw_CCA_Body_dummy
}
/**
* @desc Send template for CCA
* @param p_sessionId Session identifier
* @param p_ccaBody CCA message body
*/
template (present) CCA_MSG mdw_cCA(
template (present) Session_Id_AVP p_sessionId,
template (present) CCA_Body_AVP p_ccaBody
) modifies mw_CCA_dummy := {
header := mw_diameterHeaderAns_dummy(CCA_E, c_applIdRo),
session_Id := p_sessionId,
cCA_Body := p_ccaBody
} // End of template md_cCA
template (present) CCA_Body_AVP mdw_ccaBodyAvps(
template (present) Result_Code_AVP p_resultCode := ?,
template (present) Origin_Host_AVP p_originHost := ?,
template (present) Origin_Realm_AVP p_originRealm := ?,
template (present) Auth_Application_Id_AVP p_auth_Application_Id := ?,
template (present) CC_Request_Type_AVP p_cC_Request_Type := ?,
template (present) CC_Request_Number_AVP p_cC_Request_Number := ?
) modifies mw_CCA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm,
auth_Application_Id := p_auth_Application_Id,
cC_Request_Type := p_cC_Request_Type,
cC_Request_Number := p_cC_Request_Number
} // End of template mdw_ccaBodyAvps
template CCA_Body_AVP mdw_ccaBodyAvps_multiple_Services_Credit_Control(
template (present) Result_Code_AVP p_resultCode := ?,
template (present) Origin_Host_AVP p_originHost := ?,
template (present) Origin_Realm_AVP p_originRealm := ?,
template (present) CC_Request_Type_AVP p_cC_Request_Type := ?,
template (present) CC_Request_Number_AVP p_cC_Request_Number := ?,
template (present) Multiple_Services_Credit_Control_AVP p_multiple_Services_Credit_Control := ?,
template Cost_Information_AVP p_cost_Information := *,
template Remaining_Balance_AVP p_remaining_Balance := *
) modifies mw_CCA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm,
auth_Application_Id := mw_auth_Application_Id(4),
cC_Request_Type := p_cC_Request_Type,
cC_Request_Number := p_cC_Request_Number,
multiple_Services_Credit_Control := { p_multiple_Services_Credit_Control },
cost_Information := p_cost_Information ifpresent,
remaining_Balance := p_remaining_Balance ifpresent
} // End of template mdw_ccaBodyAvps_multiple_Services_Credit_Control
template (present) CCA_Body_AVP mdw_ccaBodyAvps_remaining_Balance(
template (present) Result_Code_AVP p_resultCode := ?,
template (present) Origin_Host_AVP p_originHost := ?,
template (present) Origin_Realm_AVP p_originRealm := ?,
template (present) CC_Request_Type_AVP p_cC_Request_Type := ?,
template (present) CC_Request_Number_AVP p_cC_Request_Number := ?,
template (present) Remaining_Balance_AVP p_remaining_Balance := ?
) modifies mw_CCA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm,
auth_Application_Id := mw_auth_Application_Id(4),
cC_Request_Type := p_cC_Request_Type,
cC_Request_Number := p_cC_Request_Number,
remaining_Balance := p_remaining_Balance
} // End of template mdw_ccaBodyAvps_remaining_Balance
template (present) CCA_Body_AVP mdw_ccaBodyAvps_cost_Information(
template (present) Result_Code_AVP p_resultCode := ?,
template (present) Origin_Host_AVP p_originHost := ?,
template (present) Origin_Realm_AVP p_originRealm := ?,
template (present) CC_Request_Type_AVP p_cC_Request_Type := ?,
template (present) CC_Request_Number_AVP p_cC_Request_Number := ?,
template (present) Cost_Information_AVP p_cost_Information := ?
) modifies mw_CCA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm,
auth_Application_Id := mw_auth_Application_Id(4),
cC_Request_Type := p_cC_Request_Type,
cC_Request_Number := p_cC_Request_Number,
cost_Information := p_cost_Information
} // End of template mdw_ccaBodyAvps_cost_Information
template CCA_Body_AVP mdw_ccaBodyAvps_service_Information(
template (present) Result_Code_AVP p_resultCode := ?,
template (present) Origin_Host_AVP p_originHost := ?,
template (present) Origin_Realm_AVP p_originRealm := ?,
template (present) CC_Request_Type_AVP p_cC_Request_Type := ?,
template (present) CC_Request_Number_AVP p_cC_Request_Number := ?,
template (present) Service_Information_AVP p_service_Information := ?
) modifies mw_CCA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm,
auth_Application_Id := mw_auth_Application_Id(4),
cC_Request_Type := p_cC_Request_Type,
cC_Request_Number := p_cC_Request_Number,
service_Information := p_service_Information
} // End of template mdw_ccaBodyAvps_service_Information
template (present) CCA_Body_AVP mdw_ccaBodyAvps_failure_handling_ccfh(
template (present) Result_Code_AVP p_resultCode := ?,
template (present) Origin_Host_AVP p_originHost := ?,
template (present) Origin_Realm_AVP p_originRealm := ?,
template (present) CC_Request_Type_AVP p_cC_Request_Type := ?,
template (present) CC_Request_Number_AVP p_cC_Request_Number := ?,
template (present) Credit_Control_Failure_Handling_AVP p_credit_Control_Failure_Handling := ?
) modifies mw_CCA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm,
auth_Application_Id := mw_auth_Application_Id(4),
cC_Request_Type := p_cC_Request_Type,
cC_Request_Number := p_cC_Request_Number,
credit_Control_Failure_Handling := p_credit_Control_Failure_Handling
} // End of template mdw_ccaBodyAvps_failure_handling_ccfh
template (present) CCA_Body_AVP mdw_ccaBodyAvps_failure_handling_ddfh(
template (present) Result_Code_AVP p_resultCode := ?,
template (present) Origin_Host_AVP p_originHost := ?,
template (present) Origin_Realm_AVP p_originRealm := ?,
template (present) CC_Request_Type_AVP p_cC_Request_Type := ?,
template (present) CC_Request_Number_AVP p_cC_Request_Number := ?,
template (present) Direct_Debiting_Failure_Handling_AVP p_direct_Debiting_Failure_Handling := ?
) modifies mw_CCA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm,
auth_Application_Id := mw_auth_Application_Id(4),
cC_Request_Type := p_cC_Request_Type,
cC_Request_Number := p_cC_Request_Number,
direct_Debiting_Failure_Handling := p_direct_Debiting_Failure_Handling
} // End of template mdw_ccaBodyAvps_failure_handling_ddfh
template (present) CCA_Body_AVP mdw_ccaBodyAvps_failure_handling_ccsf(
template (present) Result_Code_AVP p_resultCode := ?,
template (present) Origin_Host_AVP p_originHost := ?,
template (present) Origin_Realm_AVP p_originRealm := ?,
template (present) CC_Request_Type_AVP p_cC_Request_Type := ?,
template (present) CC_Request_Number_AVP p_cC_Request_Number := ?,
template (present) CC_Session_Failover_AVP p_cC_Session_Failover := ?
) modifies mw_CCA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm,
auth_Application_Id := mw_auth_Application_Id(4),
cC_Request_Type := p_cC_Request_Type,
cC_Request_Number := p_cC_Request_Number,
cC_Session_Failover := p_cC_Session_Failover
} // End of template mdw_ccaBodyAvps_failure_handling_ccsf
/**
* @desc Receive template for RAA
* @param p_sessionId Session identifier
* @param p_raaBody RAA message body
*/
template (present) RAA_MSG mdw_rAA(
template (present) Session_Id_AVP p_sessionId,
template (present) RAA_Body_AVP p_raaBody
) modifies mw_RAA_dummy := {
header := mw_diameterHeaderAns_dummy(RAA_E, c_applIdRo),
session_Id := p_sessionId,
rAA_Body := p_raaBody
} // End of template mdw_rAA
template (present) RAA_Body_AVP mdw_raaBodyAvps(
template (present) Result_Code_AVP p_resultCode := ?,
template (present) Origin_Host_AVP p_originHost := ?,
template (present) Origin_Realm_AVP p_originRealm := ?
) modifies mw_RAA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm
} // End of template mdw_raaBodyAvps
/**
* @desc Receive template for ASA
* @param p_sessionId Session identifier
* @param p_asaBody ASA message body
*/
template (present) ASA_MSG mdw_aSA(
template (present) Session_Id_AVP p_sessionId,
template (present) ASA_Body_AVP p_asaBody
) modifies mw_ASA_dummy := {
header := mw_diameterHeaderAns_dummy(ASA_E, c_applIdRo),
session_Id := p_sessionId,
aSA_Body := p_asaBody
} // End of template mdw_aSA
template (present) ASA_Body_AVP mdw_asaBodyAvps(
template (present) Result_Code_AVP p_resultCode := ?,
template (present) Origin_Host_AVP p_originHost := ?,
template (present) Origin_Realm_AVP p_originRealm := ?
) modifies mw_ASA_Body_dummy := {
result_Code := p_resultCode,
origin_Host := p_originHost,
origin_Realm := p_originRealm
} // End of template mdw_asaBodyAvps
} // End of group Ro_answer_message_templates_receive
} // End of group Ro_modified_message_templates
group Ro_avps_templates {
group Ro_dummy_avps_templates_send {
template (omit) Multiple_Services_Credit_Control_AVP m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code, 0),
granted_Service_Unit := omit,
requested_Service_Unit := omit,
used_Service_Unit := omit,
tariff_Change_Usage := omit,
service_Identifier := omit,
rating_Group := omit,
g_S_U_Pool_Reference := omit,
validity_Time := omit,
result_Code := omit,
final_Unit_Indication := omit,
time_Quota_Threshold := omit,
volume_Quota_Threshold := omit,
unit_Quota_Threshold := omit,
quota_Holding_Time := omit,
quota_Consumption_Time := omit,
reporting_Reason := omit,
trigger_ := omit,
ps_Furnish_Charging_Information := omit,
refund_Information := omit,
aF_Correlation_Information := omit,
envelope := omit,
envelope_Reporting := omit,
time_Quota_Mechanism := omit,
service_Specific_Info := omit,
qoS_Information := omit,
aVP_Type := omit
} // End of template m_multiple_Services_Credit_Control_AVP_dummy
template (value) Requested_Service_Unit_AVP m_requested_Service_Unit_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_requested_Service_Unit_AVP_Code, 0),
cC_Time := omit,
cC_Money := omit,
cC_Total_Octets := omit,
cC_Input_Octets := omit,
cC_Output_Octets := omit,
cC_Service_Specific_Units := omit,
aVP_Type := omit
} // End of template m_requested_Service_Unit_AVP_dummy
template (value) Used_Service_Unit_AVP m_used_Service_Unit_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_used_Service_Unit_AVP_Code, 0),
reporting_Reason := omit,
tariff_Change_Usage := omit,
cC_Time := omit,
cC_Money := omit,
cC_Total_Octets := omit,
cC_Input_Octets := omit,
cC_Output_Octets := omit,
cC_Service_Specific_Units := omit,
event_Charging_TimeStamp := omit,
aVP_Type := omit
} // End of template m_used_Service_Unit_AVP_dummy
template (value) Granted_Service_Unit_AVP m_granted_Service_Unit_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_granted_Service_Unit_AVP_Code, 0),
tariff_Time_Change := omit,
cC_Time := omit,
cC_Money := omit,
cC_Total_Octets := omit,
cC_Input_Octets := omit,
cC_Output_Octets := omit,
cC_Service_Specific_Units := omit,
aVP_Type := omit
} // End of template m_granted_Service_Unit_dummy
} // End of group Ro_dummy_avps_templates_send
group Ro_avps_templates_send {
/**
* @desc Send template for CC_Request_Type AVP
* @param p_aVP_Data The request type
*/
template (value) CC_Request_Type_AVP md_cC_Request_Type(
in template (value) CC_Request_Ty_Type p_aVP_Data
) modifies m_cC_Request_Type_dummy := {
aVP_Data := p_aVP_Data
}
/**
* @desc Send template for CC_Request_Number AVP
* @param p_aVP_Data Request identifier
*/
template (value) CC_Request_Number_AVP md_cC_Request_Number(
in template (value) UInt32 p_aVP_Data
) modifies m_cC_Request_Number_dummy := {
aVP_Data := p_aVP_Data
}
/**
* @desc Send template for Service_Context_Id AVP
* @param p_aVP_Data The service context identifier
*/
template (value) Service_Context_Id_AVP m_service_Context_Id(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_Context_Id_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data))),
aVP_Data := p_aVP_Data
} // End of template m_service_Context_Id
/**
* @desc Send template for Requested_Action AVP
* @param p_aVP_Data The requested action
*/
template (value) Requested_Action_AVP m_requested_Action(
in template (value) Requested_Action_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_requested_Action_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_requested_Action_AVP
template (omit) Multiple_Services_Credit_Control_AVP m_multiple_Services_Credit_Control(
in template (omit) Requested_Service_Unit_AVP p_requested_Service_Unit := omit,
in template (omit) Multiple_Services_Credit_Control_AVP.used_Service_Unit p_used_Service_Unit := omit,
in template (omit) Multiple_Services_Credit_Control_AVP.service_Identifier p_service_Identifier := omit
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getMultipleServicesCreditControlAVPLength(p_requested_Service_Unit, p_used_Service_Unit, p_service_Identifier)
),
requested_Service_Unit := p_requested_Service_Unit,
used_Service_Unit := p_used_Service_Unit,
service_Identifier := p_service_Identifier
} // End of template m_multiple_Services_Credit_Control_AVP
template (value) Multiple_Services_Credit_Control_AVP m_multiple_Services_Credit_Control_RefundInfo(
in template (value) Refund_Information_AVP p_refund_Information
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_refund_Information.aVP_Header.aVP_len)
),
refund_Information := p_refund_Information
} // End of template m_multiple_Services_Credit_Control_RefundInfo
template (value) Multiple_Services_Credit_Control_AVP m_multiple_Services_Credit_Control_Trigger(
in template (value) Trigger_AVP p_trigger
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_trigger.aVP_Header.aVP_len)
),
trigger_ := p_trigger
} // End of template m_multiple_Services_Credit_Control_Trigger_AVP
template (value) Multiple_Services_Credit_Control_AVP m_multiple_Services_Credit_Control_finalUnitInd(
in template (value) Final_Unit_Indication_AVP p_final_Unit_Indication
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_final_Unit_Indication.aVP_Header.aVP_len)
),
final_Unit_Indication := p_final_Unit_Indication
} // End of template m_multiple_Services_Credit_Control_finalUnitInd
template (value) Multiple_Services_Indicator_AVP m_multiple_Services_Indicator(
in template (value) Multiple_Serv_Indi_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Indicator_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_multiple_Services_Indicator_AVP
template (value) Multiple_Services_Credit_Control_AVP md_multiple_Services_Credit_Control_granted_Service_Unit_Envelope(
in template (value) Granted_Service_Unit_AVP p_granted_Service_Unit,
in template (value) Envelope_AVP p_envelope
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_granted_Service_Unit.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_envelope.aVP_Header.aVP_len)
),
granted_Service_Unit := p_granted_Service_Unit,
envelope := { p_envelope }
} // End of template md_multiple_Services_Credit_Control_granted_Service_Unit_Envelope
template (value) Multiple_Services_Credit_Control_AVP md_multiple_Services_Credit_Control_granted_Service_Unit_Envelope_Reporting(
in template (value) Granted_Service_Unit_AVP p_granted_Service_Unit,
in template (value) Envelope_Reporting_AVP p_envelope_Reporting
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_granted_Service_Unit.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_envelope_Reporting.aVP_Header.aVP_len)
),
granted_Service_Unit := p_granted_Service_Unit,
envelope_Reporting := p_envelope_Reporting
} // End of template md_multiple_Services_Credit_Control_granted_Service_Unit_Envelope_Reporting
template (value) Multiple_Services_Credit_Control_AVP md_multiple_Services_Credit_Control_granted_Service_Unit(
in template (value) Granted_Service_Unit_AVP p_granted_Service_Unit
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_granted_Service_Unit.aVP_Header.aVP_len)
),
granted_Service_Unit := p_granted_Service_Unit
} // End of template md_multiple_Services_Credit_Control_granted_Service_Unit
template (value) Multiple_Services_Credit_Control_AVP md_multiple_Services_Credit_Control_quota_Holding_Time(
in template (value) Quota_Holding_Time_AVP p_quota_Holding_Time
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_quota_Holding_Time.aVP_Header.aVP_len)
),
quota_Holding_Time := p_quota_Holding_Time
} // End of template md_multiple_Services_Credit_Control_quota_Holding_Time
template (value) Multiple_Services_Credit_Control_AVP md_multiple_Services_Credit_Control_grantedServUnit_quotaConsumTime
(
in template (value) Granted_Service_Unit_AVP p_granted_Service_Unit,
in template (value) Quota_Consumption_Time_AVP p_quota_Consumption_Time
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_granted_Service_Unit.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_quota_Consumption_Time.aVP_Header.aVP_len)
),
granted_Service_Unit := p_granted_Service_Unit,
quota_Consumption_Time := p_quota_Consumption_Time
} // End of template md_multiple_Services_Credit_Control_grantedServUnit_quotaConsumTime
template (value) Multiple_Services_Credit_Control_AVP md_multiple_Services_Credit_Control_Time_Quota_Mechanism(
template (value) Time_Quota_Mechanism_AVP p_time_Quota_Mechanism
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_time_Quota_Mechanism.aVP_Header.aVP_len)
),
time_Quota_Mechanism := p_time_Quota_Mechanism
} // End of template md_multiple_Services_Credit_Control_Time_Quota_Mechanism
template (value) Multiple_Services_Credit_Control_AVP md_multipleServicesCreditControl_TimeQuotaMechanism_QuotaConsumptTime(
in template (value) Time_Quota_Mechanism_AVP p_time_Quota_Mechanism,
in template (value) Quota_Consumption_Time_AVP p_quota_Consumption_Time
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_time_Quota_Mechanism.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_quota_Consumption_Time.aVP_Header.aVP_len)
),
time_Quota_Mechanism := p_time_Quota_Mechanism,
quota_Consumption_Time := p_quota_Consumption_Time
} // End of template md_multiple_Services_Credit_Control_Time_Quota_Mechanism
template (value) Multiple_Services_Credit_Control_AVP md_multipleServicesCreditControl_GrantedServUnit_TimeQuotaMechanism_QuotaConsumptTime(
in template (value) Granted_Service_Unit_AVP p_granted_Service_Unit,
in template (value) Time_Quota_Mechanism_AVP p_time_Quota_Mechanism,
in template (value) Quota_Consumption_Time_AVP p_quota_Consumption_Time
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_granted_Service_Unit.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_time_Quota_Mechanism.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_quota_Consumption_Time.aVP_Header.aVP_len)
),
granted_Service_Unit := p_granted_Service_Unit,
time_Quota_Mechanism := p_time_Quota_Mechanism,
quota_Consumption_Time := p_quota_Consumption_Time
} // End of template md_multipleServicesCreditControl_GrantedServUnit_TimeQuotaMechanism_QuotaConsumptTime
template (value) Multiple_Services_Credit_Control_AVP md_multipleServicesCreditControl_GrantedServUnit_TimeQuotaMechanism_QuotaConsumptTime_EnvelopeReport(
in template (value) Granted_Service_Unit_AVP p_granted_Service_Unit,
in template (value) Time_Quota_Mechanism_AVP p_time_Quota_Mechanism,
in template (value) Quota_Consumption_Time_AVP p_quota_Consumption_Time,
in template (value) Envelope_Reporting_AVP p_envelope_Reporting
) modifies m_multiple_Services_Credit_Control_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_multiple_Services_Credit_Control_AVP_Code,
f_getByteAlignedLength(p_granted_Service_Unit.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_time_Quota_Mechanism.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_quota_Consumption_Time.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_envelope_Reporting.aVP_Header.aVP_len)
),
granted_Service_Unit := p_granted_Service_Unit,
time_Quota_Mechanism := p_time_Quota_Mechanism,
quota_Consumption_Time := p_quota_Consumption_Time,
envelope_Reporting := p_envelope_Reporting
} // End of template md_multipleServicesCreditControl_GrantedServUnit_TimeQuotaMechanism_QuotaConsumptTime_EnvelopeReport
template (value) Granted_Service_Unit_AVP m_granted_Service_Unit_Volume(
in template (value) CC_Total_Octets_AVP p_cC_Total_Octets
) modifies m_granted_Service_Unit_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_granted_Service_Unit_AVP_Code,
f_getByteAlignedLength(p_cC_Total_Octets.aVP_Header.aVP_len)
),
cC_Total_Octets := p_cC_Total_Octets
} // End of template m_granted_Service_Unit_Volume_AVP
template (value) Granted_Service_Unit_AVP md_granted_Service_Unit_cC_Time(
in template (value) CC_Time_AVP p_cC_Time
) modifies m_granted_Service_Unit_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_granted_Service_Unit_AVP_Code,
f_getByteAlignedLength(p_cC_Time.aVP_Header.aVP_len)
),
cC_Time := p_cC_Time
} // End of template md_granted_Service_Unit_Tariff_Time_Change
template (value) Granted_Service_Unit_AVP md_granted_Service_Unit_Tariff_Time_Change(
in template (value) Tariff_Time_Change_AVP p_tariff_Time_Change
) modifies m_granted_Service_Unit_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_granted_Service_Unit_AVP_Code,
f_getByteAlignedLength(p_tariff_Time_Change.aVP_Header.aVP_len)
),
tariff_Time_Change := p_tariff_Time_Change
} // End of template md_granted_Service_Unit_Tariff_Time_Change
template (value) Requested_Service_Unit_AVP m_requested_Service_Unit_cC_Time(
in template (value) CC_Time_AVP p_cC_Time
) modifies m_requested_Service_Unit_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_requested_Service_Unit_AVP_Code,
f_getByteAlignedLength(p_cC_Time.aVP_Header.aVP_len)),
cC_Time := p_cC_Time
} // End of template m_requested_Service_Unit_cC_Time
template (value) Requested_Service_Unit_AVP m_requested_Service_Unit_cC_Money(
in template (value) CC_Money_AVP p_cC_Money
) modifies m_requested_Service_Unit_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_requested_Service_Unit_AVP_Code,
f_getByteAlignedLength(p_cC_Money.aVP_Header.aVP_len)),
cC_Money := p_cC_Money
} // End of template m_requested_Service_Unit_cC_Money
template (value) Requested_Service_Unit_AVP m_requested_Service_Unit_cC_Total_Octets(
in template (value) CC_Total_Octets_AVP p_cC_Total_Octets
) modifies m_requested_Service_Unit_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_requested_Service_Unit_AVP_Code,
f_getByteAlignedLength(p_cC_Total_Octets.aVP_Header.aVP_len)),
cC_Total_Octets := p_cC_Total_Octets
} // End of template m_requested_Service_Unit_cC_Total_Octets
template (value) Requested_Service_Unit_AVP m_requested_Service_Unit_cC_Service_Specific_Units(
in template (value) CC_Service_Specific_Units_AVP p_cC_Service_Specific_Units
) modifies m_requested_Service_Unit_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_requested_Service_Unit_AVP_Code,
f_getByteAlignedLength(p_cC_Service_Specific_Units.aVP_Header.aVP_len)),
cC_Service_Specific_Units := p_cC_Service_Specific_Units
} // End of template m_requested_Service_Unit_cC_Total_Octets
template (value) Used_Service_Unit_AVP m_used_Service_Unit_tariff_Changes(
in template (value) Tariff_Change_Usage_AVP p_tariff_Change_Usage
) modifies m_used_Service_Unit_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_used_Service_Unit_AVP_Code,
f_getByteAlignedLength(p_tariff_Change_Usage.aVP_Header.aVP_len)),
tariff_Change_Usage := p_tariff_Change_Usage
} // End of template m_used_Service_Unit_cC_Time
template (value) Used_Service_Unit_AVP m_used_Service_Unit_cC_Time(
in template (value) CC_Time_AVP p_cC_Time
) modifies m_used_Service_Unit_AVP_dummy := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_used_Service_Unit_AVP_Code,
f_getByteAlignedLength(p_cC_Time.aVP_Header.aVP_len)),
cC_Time := p_cC_Time
} // End of template m_used_Service_Unit_cC_Time
template (value) Service_Identifier_AVP m_service_Identifier(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_Identifier_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_service_Identifier
template (value) CC_Time_AVP m_cC_Time(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Time_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_cC_Time
template (omit) CC_Money_AVP m_cC_Money(
in template (value) Unit_Value_AVP p_unit_Value,
in template (omit) Currency_Code_AVP p_currency_Code := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Money_AVP_Code,
f_getCCMoneyAVPLength(p_unit_Value, p_currency_Code)),
unit_Value := p_unit_Value,
currency_Code := p_currency_Code
} // End of template m_cC_Money
template (value) CC_Total_Octets_AVP m_cC_Total_Octets(
in template (value) UInt64 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Total_Octets_AVP_Code, 8),
aVP_Data := p_aVP_Data
} // End of template m_cC_Total_Octets
template (value) CC_Input_Octets_AVP m_cC_Input_Octets(
in template (value) UInt64 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Input_Octets_AVP_Code, 8),
aVP_Data := p_aVP_Data
} // End of template m_cC_Input_Octets
template (value) CC_Output_Octets_AVP m_cC_Output_Octets(
in template (value) UInt64 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Output_Octets_AVP_Code, 8),
aVP_Data := p_aVP_Data
} // End of template m_cC_Output_Octets
template (value) CC_Service_Specific_Units_AVP m_cC_Service_Specific_Units(
in template (value) UInt64 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Service_Specific_Units_AVP_Code, 8),
aVP_Data := p_aVP_Data
} // End of template m_cC_Service_Specific_Units
template (omit) Cost_Information_AVP m_cost_Information(
in template (value) Unit_Value_AVP p_unit_Value,
in template (value) Currency_Code_AVP p_currency_Code,
in template (omit) Cost_Unit_AVP p_cost_Unit := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cost_Information_AVP_Code,
f_getCostInformationAVPLength(p_unit_Value, p_currency_Code, p_cost_Unit)),
unit_Value := p_unit_Value,
currency_Code := p_currency_Code,
cost_Unit := p_cost_Unit
} // End of template m_cost_Information
template (omit) Unit_Value_AVP m_unit_Value(
in template (value) Value_Digits_AVP p_value_Digits,
in template (omit) Exponent_AVP p_exponent := omit
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_unit_Value_AVP_Code,
f_getValuesDigitsAndExponentLength(p_value_Digits, p_exponent)),
value_Digits := p_value_Digits,
exponent := p_exponent
} // End of template m_unit_Value
template (value) Value_Digits_AVP m_value_Digits(
in template (value) Int64 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_value_Digits_AVP_Code, 8),
aVP_Data := p_aVP_Data
} // End of template m_value_Digits
template (value) Exponent_AVP m_exponent(
in template (value) Int32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_exponent_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_exponent
template (value) Currency_Code_AVP m_currency_Code(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_currency_Code_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_currency_Code
template (value) CC_Request_Type_AVP m_cC_Request_Type(
in template (value) CC_Request_Ty_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Request_Type_AVP_Code, 4),
aVP_Data := p_aVP_Data
}// End of template m_cC_Request_Type
template (value) CC_Request_Number_AVP m_cC_Request_Number(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Request_Number_AVP_Code, 4),
aVP_Data := p_aVP_Data
}// End of template m_cC_Request_Number
template (value) Tariff_Change_Usage_AVP m_tariff_Change_Usage(
in template (value) Tariff_Change_Usage_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_tariff_Change_Usage_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_tariff_Change_Usage
template (value) G_S_U_Pool_Reference_AVP m_g_S_U_Pool_Reference(
in template (value) G_S_U_Pool_Identifier_AVP p_g_S_U_Pool_Identifier,
in template (value) CC_Unit_Type_AVP p_cC_Unit_Type,
in template (value) Unit_Value_AVP p_unit_Value
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_g_S_U_Pool_Reference_AVP_Code,
f_getByteAlignedLength(p_g_S_U_Pool_Identifier.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_cC_Unit_Type.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_unit_Value.aVP_Header.aVP_len)
),
g_S_U_Pool_Identifier := p_g_S_U_Pool_Identifier,
cC_Unit_Type := p_cC_Unit_Type,
unit_Value := p_unit_Value
} // End of template m_g_S_U_Pool_Reference
template (value) G_S_U_Pool_Identifier_AVP m_g_S_U_Pool_Identifier(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_g_S_U_Pool_Identifier_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_g_S_U_Pool_Identifier
template (value) CC_Unit_Type_AVP m_cC_Unit_Type(
in template (value) CC_Unit_Ty_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_cC_Unit_Type_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_cC_Unit_Type
template (value) Tariff_Time_Change_AVP m_tariff_Time_Change(
Time p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_tariff_Time_Change_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_tariff_Time_Change
template (value) Credit_Control_Failure_Handling_AVP m_credit_Control_Failure_Handling(
in template (value) Credit_Cont_Fail_Hand_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_credit_Control_Failure_Handling_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_credit_Control_Failure_Handling
template (value) Direct_Debiting_Failure_Handling_AVP m_direct_Debiting_Failure_Handling(
in template (value) Direct_Debi_Fail_Hand_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_direct_Debiting_Failure_Handling_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_direct_Debiting_Failure_Handling
template (value) Final_Unit_Indication_AVP m_final_Unit_Indication(
template (value) Final_Unit_Action_AVP p_final_Unit_Action
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_final_Unit_Indication_AVP_Code,
f_getByteAlignedLength(p_final_Unit_Action.aVP_Header.aVP_len)
),
final_Unit_Action := p_final_Unit_Action,
restriction_Filter_Rule := omit,
filter_Id := omit,
redirect_Server := omit
} // End of template m_final_Unit_Indication
template (value) Final_Unit_Indication_AVP m_final_Unit_Indication_redirect(
template (value) Final_Unit_Action_AVP p_final_Unit_Action,
template (value) Redirect_Server_AVP p_redirect_Server
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_final_Unit_Indication_AVP_Code,
f_getByteAlignedLength(p_final_Unit_Action.aVP_Header.aVP_len)+
f_getByteAlignedLength(p_redirect_Server.aVP_Header.aVP_len)
),
final_Unit_Action := p_final_Unit_Action,
restriction_Filter_Rule := omit,
filter_Id := omit,
redirect_Server := p_redirect_Server
} // End of template m_final_Unit_Indication_redirect
template (value) Final_Unit_Action_AVP m_final_Unit_Action(
template (value) Final_Unit_Action_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_final_Unit_Action_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_final_Unit_Action
template (value) Redirect_Server_AVP m_redirect_Server(
template (value) Redirect_Address_Type_AVP p_redirect_Address_Type,
template (value) Redirect_Server_Address_AVP p_redirect_Server_Address
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_redirect_Server_AVP_Code,
f_getByteAlignedLength(p_redirect_Address_Type.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_redirect_Server_Address.aVP_Header.aVP_len)
),
redirect_Address_Type := p_redirect_Address_Type,
redirect_Server_Address := p_redirect_Server_Address
} // End of template m_redirect_Server
template (value) Redirect_Address_Type_AVP m_redirect_Address_Type(
template (value) Redirect_Address_Ty_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_redirect_Address_Type_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_redirect_Address_Type
template (value) Redirect_Server_Address_AVP m_redirect_Server_Address(
template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_redirect_Server_Address_AVP_Code,
f_getUTF8StringLength(valueof(p_aVP_Data))
),
aVP_Data := p_aVP_Data
} // End of template m_redirect_Server_Address
} // End of group Ro_avps_templates_send
group Ro_dummy_avps_templates_receive {
template Multiple_Services_Credit_Control_AVP mw_multiple_Services_Credit_Control_dummy := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_multiple_Services_Credit_Control_AVP_Code),
granted_Service_Unit := *,
requested_Service_Unit := *,
used_Service_Unit := *,
tariff_Change_Usage := *,
service_Identifier := *,
rating_Group := *,
g_S_U_Pool_Reference := *,
validity_Time := *,
result_Code := *,
final_Unit_Indication := *,
time_Quota_Threshold := *,
volume_Quota_Threshold := *,
unit_Quota_Threshold := *,
quota_Holding_Time := *,
quota_Consumption_Time := *,
reporting_Reason := *,
trigger_ := *,
ps_Furnish_Charging_Information := *,
refund_Information := *,
aF_Correlation_Information := *,
envelope := *,
envelope_Reporting := *,
time_Quota_Mechanism := *,
service_Specific_Info := *,
qoS_Information := *,
aVP_Type := *
} // End of template mw_multiple_Services_Credit_Control_dummy
template (present) Multiple_Services_Credit_Control_AVP mw_multiple_Services_Credit_Control_Pool_Reference(
in template (present) G_S_U_Pool_Reference_AVP p_g_S_U_Pool_Reference := ?
) modifies mw_multiple_Services_Credit_Control_dummy := {
g_S_U_Pool_Reference := { p_g_S_U_Pool_Reference }
} // End of template mw_multiple_Services_Credit_Control_Pool_Reference
template Granted_Service_Unit_AVP mw_granted_Service_Unit_dummy := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_granted_Service_Unit_AVP_Code),
tariff_Time_Change := *,
cC_Time := *,
cC_Money := *,
cC_Total_Octets := *,
cC_Input_Octets := *,
cC_Output_Octets := *,
cC_Service_Specific_Units := *,
aVP_Type := *
} // End of template mw_granted_Service_Unit_dummy
template (present) Used_Service_Unit_AVP mw_used_Service_Unit_AVP_dummy := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_used_Service_Unit_AVP_Code),
reporting_Reason := *,
tariff_Change_Usage := *,
cC_Time := *,
cC_Money := *,
cC_Total_Octets := *,
cC_Input_Octets := *,
cC_Output_Octets := *,
cC_Service_Specific_Units := *,
event_Charging_TimeStamp := *,
aVP_Type := *
} // End of template mw_used_Service_Unit_AVP_dummy
} // End of group Ro_dummy_avps_templates_receive
group Ro_avps_templates_receive {
template (present) CC_Request_Type_AVP mw_cC_Request_Type(
template (present) CC_Request_Ty_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Request_Type_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_cC_Request_Type
template (present) CC_Request_Number_AVP mw_cC_Request_Number(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Request_Number_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_cC_Request_Number
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_granted_Service_Unit(
template (present) Granted_Service_Unit_AVP p_granted_Service_Unit := ?
) modifies mw_multiple_Services_Credit_Control_dummy := {
granted_Service_Unit := p_granted_Service_Unit
} // End of template mdw_multiple_Services_Credit_Control_granted_Service_Unit
template Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_granted_Service_Unit_Envelope(
template (present) Granted_Service_Unit_AVP p_granted_Service_Unit := ?,
template Multiple_Services_Credit_Control_AVP.envelope p_envelope := *
) modifies mw_multiple_Services_Credit_Control_dummy := {
granted_Service_Unit := p_granted_Service_Unit,
envelope := p_envelope
} // End of template mdw_multiple_Services_Credit_Control_granted_Service_Unit_Envelope
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_granted_Service_Unit_Time_Quota_Threshold(
template (present) Granted_Service_Unit_AVP p_granted_Service_Unit := ?,
template (present) Time_Quota_Threshold_AVP p_time_Quota_Threshold := ?
) modifies mdw_multiple_Services_Credit_Control_granted_Service_Unit := {
time_Quota_Threshold := p_time_Quota_Threshold
} // End of template mdw_multiple_Services_Credit_Control_granted_Service_Unit_Time_Quota_Threshold
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_granted_Service_Unit_Volume_Quota_Threshold(
template (present) Granted_Service_Unit_AVP p_granted_Service_Unit := ?,
template (present) Volume_Quota_Threshold_AVP p_volume_Quota_Threshold := ?
) modifies mdw_multiple_Services_Credit_Control_granted_Service_Unit := {
volume_Quota_Threshold := p_volume_Quota_Threshold
} // End of template mdw_multiple_Services_Credit_Control_granted_Service_Unit_Volume_Quota_Threshold
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_noGrantedServUnitVolume_noQuotaThreshold
modifies mw_multiple_Services_Credit_Control_dummy := {
granted_Service_Unit := omit,
volume_Quota_Threshold := omit
} // End of template mdw_multiple_Services_Credit_Control_granted_Service_Unit_Volume_Quota_Threshold
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_granted_Service_Unit_Unit_Quota_Threshold(
template (present) Granted_Service_Unit_AVP p_granted_Service_Unit := ?,
template (present) Unit_Quota_Threshold_AVP p_unit_Quota_Threshold := ?
) modifies mdw_multiple_Services_Credit_Control_granted_Service_Unit := {
unit_Quota_Threshold := p_unit_Quota_Threshold
} // End of template mdw_multiple_Services_Credit_Control_granted_Service_Unit_Unit_Quota_Threshold
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_granted_Service_Unit_Quota_Consumption_Time(
template (present) Granted_Service_Unit_AVP p_granted_Service_Unit := ?,
template (present) Quota_Consumption_Time_AVP p_quota_Consumption_Time := ?
) modifies mdw_multiple_Services_Credit_Control_granted_Service_Unit := {
quota_Consumption_Time := p_quota_Consumption_Time
} // End of template mdw_multiple_Services_Credit_Control_granted_Service_Unit_Quota_Consumption_Time
template Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(
template Requested_Service_Unit_AVP p_requested_Service_Unit,
template Multiple_Services_Credit_Control_AVP.service_Identifier p_service_Identifier
) modifies mw_multiple_Services_Credit_Control_dummy := {
requested_Service_Unit := p_requested_Service_Unit,
service_Identifier := p_service_Identifier
} // End of template mdw_multiple_Services_Credit_Control_ReqServUnit_ServId
template Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff(
template Requested_Service_Unit_AVP p_requested_Service_Unit,
template Multiple_Services_Credit_Control_AVP.used_Service_Unit p_used_Service_Unit
) modifies mw_multiple_Services_Credit_Control_dummy := {
requested_Service_Unit := p_requested_Service_Unit,
used_Service_Unit := p_used_Service_Unit,
tariff_Change_Usage := omit
} // End of template mdw_multiple_Services_Credit_Control_ReqServUnit_UsedServ_NoTariff
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_Final_Unit_Indication(
template (present) Final_Unit_Indication_AVP p_final_Unit_Indication
) modifies mw_multiple_Services_Credit_Control_dummy := {
final_Unit_Indication := p_final_Unit_Indication
} // End of template mdw_multiple_Services_Credit_Control_Final_Unit_Indication
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_RefundInfo(
template (present) Refund_Information_AVP p_refund_Information
) modifies mw_multiple_Services_Credit_Control_dummy := {
refund_Information := p_refund_Information
} // End of template mdw_multiple_Services_Credit_Control_RefundInfo
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_Pool_Reference(
template (present) G_S_U_Pool_Reference_AVP p_g_S_U_Pool_Reference := ?
) modifies mw_multiple_Services_Credit_Control_dummy := {
g_S_U_Pool_Reference := { p_g_S_U_Pool_Reference }
} // End of template mdw_multiple_Services_Credit_Control_Pool_Reference
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_quota_holdling(
template (present) Quota_Holding_Time_AVP p_quota_Holding_Time := ?
) modifies mw_multiple_Services_Credit_Control_dummy := {
quota_Holding_Time := p_quota_Holding_Time
} // End of template mdw_multiple_Services_Credit_Control_quota_holdling
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_Envelope_Reporting(
template (present) Envelope_Reporting_AVP p_envelope_Reporting := ?
) modifies mw_multiple_Services_Credit_Control_dummy := {
envelope_Reporting := p_envelope_Reporting
} // End of template mdw_multiple_Services_Credit_Control_Envelope_Reporting
template (present) Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_Time_Quota_Mechanism(
template (present) Time_Quota_Mechanism_AVP p_time_Quota_Mechanism := ?
) modifies mw_multiple_Services_Credit_Control_dummy := {
time_Quota_Mechanism := p_time_Quota_Mechanism
} // End of template mdw_multiple_Services_Credit_Control_Time_Quota_Mechanism
template Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_Trigger_reportingReason(
template Trigger_AVP p_trigger,
template Multiple_Services_Credit_Control_AVP.reporting_Reason p_reporting_Reason := *
) modifies mw_multiple_Services_Credit_Control_dummy := {
trigger_ := p_trigger,
reporting_Reason := p_reporting_Reason
} // End of template mdw_multiple_Services_Credit_Control_Trigger_reportingReason
template Multiple_Services_Credit_Control_AVP mdw_multiple_Services_Credit_Control_UsedServUnit_Envelope(
template (present) Multiple_Services_Credit_Control_AVP.used_Service_Unit p_used_Service_Unit := ?,
template Multiple_Services_Credit_Control_AVP.envelope p_envelope := *
) modifies mw_multiple_Services_Credit_Control_dummy := {
used_Service_Unit := p_used_Service_Unit,
envelope := p_envelope
} // End of template mdw_multiple_Services_Credit_Control_UsedServUnit_ServId_Envelope
template (present) Granted_Service_Unit_AVP mdw_granted_Service_Unit_Time(
template (present) CC_Time_AVP p_cC_Time := ?
) modifies mw_granted_Service_Unit_dummy := {
cC_Time := p_cC_Time
} // End of template mdw_granted_Service_Unit
template (present) Granted_Service_Unit_AVP mdw_granted_Service_Unit_Money(
template (present) CC_Money_AVP p_cC_Money := ?
) modifies mw_granted_Service_Unit_dummy := {
cC_Money := p_cC_Money
} // End of template mdw_granted_Service_Unit
template (present) Granted_Service_Unit_AVP mdw_granted_Service_Unit_Tariff_Time_Change(
template (present) Tariff_Time_Change_AVP p_tariff_Time_Change := ?
) modifies mw_granted_Service_Unit_dummy := {
tariff_Time_Change := p_tariff_Time_Change
} // End of template mdw_granted_Service_Unit_Tariff_Time_Change
template Granted_Service_Unit_AVP mdw_granted_Service_Unit_Volume(
template CC_Total_Octets_AVP p_cC_Total_Octets,
template CC_Input_Octets_AVP p_cC_Input_Octets,
template CC_Output_Octets_AVP p_cC_Output_Octets
) modifies mw_granted_Service_Unit_dummy := {
cC_Total_Octets := p_cC_Total_Octets,
cC_Input_Octets := p_cC_Input_Octets,
cC_Output_Octets := p_cC_Output_Octets
} // End of template mdw_granted_Service_Unit_Volume
template (present) Granted_Service_Unit_AVP mdw_granted_Service_Unit_Service_Specific_Units(
template (present) CC_Service_Specific_Units_AVP p_cC_Service_Specific_Units := ?
) modifies mw_granted_Service_Unit_dummy := {
cC_Service_Specific_Units := p_cC_Service_Specific_Units
} // End of template mdw_granted_Service_Unit_Service_Specific_Units
template (present) CC_Time_AVP mw_cC_Time(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Time_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_cC_Time
template CC_Money_AVP mw_cC_Money(
template (present) Unit_Value_AVP p_unit_Value := ?,
template Currency_Code_AVP p_currency_Code := *
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Money_AVP_Code),
unit_Value := p_unit_Value,
currency_Code := p_currency_Code
} // End of template mw_cC_Money
template (present) CC_Service_Specific_Units_AVP mw_cC_Service_Specific_Units(
template (present) UInt64 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Service_Specific_Units_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_cC_Service_Specific_Units
template Cost_Information_AVP mw_cost_Information(
template (present) Unit_Value_AVP p_unit_Value := ?,
template (present) Currency_Code_AVP p_currency_Code := ?,
template Cost_Unit_AVP p_cost_Unit := *
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cost_Information_AVP_Code),
unit_Value := p_unit_Value,
currency_Code := p_currency_Code,
cost_Unit := p_cost_Unit
} // End of template mw_cost_Information
template Unit_Value_AVP mw_unit_Value(
template (present) Value_Digits_AVP p_value_Digits := ?,
template Exponent_AVP p_exponent := *
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_unit_Value_AVP_Code),
value_Digits := p_value_Digits,
exponent := p_exponent
} // End of template mw_unit_Value
template (present) Value_Digits_AVP mw_value_Digits(
template (present) Int64 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_value_Digits_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_value_Digits
template (present) Requested_Action_AVP mw_requested_Action(
template (present) Requested_Action_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_requested_Action_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template m_requested_Action
template (present) Currency_Code_AVP mw_currency_Code(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_currency_Code_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_currency_Code
template (present) Tariff_Change_Usage_AVP mw_tariff_Change_Usage(
template (present) Tariff_Change_Usage_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_tariff_Change_Usage_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_tariff_Change_Usage
template (present) Tariff_Time_Change_AVP mw_tariff_Time_Change(
template (present) Time p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_tariff_Time_Change_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_tariff_Time_Change
template (present) Credit_Control_Failure_Handling_AVP mw_credit_Control_Failure_Handling(
template (present) Credit_Cont_Fail_Hand_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_credit_Control_Failure_Handling_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_credit_Control_Failure_Handling
template (present) Direct_Debiting_Failure_Handling_AVP mw_direct_Debiting_Failure_Handling(
template (present) Direct_Debi_Fail_Hand_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_direct_Debiting_Failure_Handling_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_direct_Debiting_Failure_Handling
template (present) CC_Session_Failover_AVP mw_cC_Session_Failover(
template (present) CC_Session_Failover_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Session_Failover_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_cC_Session_Failover
template (present) G_S_U_Pool_Reference_AVP mw_g_S_U_Pool_Reference(
template (present) G_S_U_Pool_Identifier_AVP p_g_S_U_Pool_Identifier := ?,
template (present) CC_Unit_Type_AVP p_cC_Unit_Type := ?,
template (present) Unit_Value_AVP p_unit_Value := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_g_S_U_Pool_Reference_AVP_Code),
g_S_U_Pool_Identifier := p_g_S_U_Pool_Identifier,
cC_Unit_Type := p_cC_Unit_Type,
unit_Value := p_unit_Value
} // End of template mw_g_S_U_Pool_Reference
template (present) G_S_U_Pool_Identifier_AVP mw_g_S_U_Pool_Identifier(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_g_S_U_Pool_Identifier_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_g_S_U_Pool_Identifier
template (present) CC_Unit_Type_AVP mw_cC_Unit_Type(
template (present) CC_Unit_Ty_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_cC_Unit_Type_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_cC_Unit_Type
template (present) Multiple_Services_Indicator_AVP mw_multiple_Services_Indicator(
template (present) Multiple_Serv_Indi_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_multiple_Services_Indicator_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_multiple_Services_Indicator
template (present) Re_Auth_Request_Type_AVP mw_re_Auth_Request(
template (present) Re_Auth_Req_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_re_Auth_Request_Type_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_re_Auth_Request
template Final_Unit_Indication_AVP mw_final_Unit_Indication(
template (present) Final_Unit_Action_AVP p_final_Unit_Action := ?,
template Redirect_Server_AVP p_redirect_Server := *
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_final_Unit_Indication_AVP_Code),
final_Unit_Action := p_final_Unit_Action,
restriction_Filter_Rule := *,
filter_Id := *,
redirect_Server := p_redirect_Server
} // End of template mw_final_Unit_Indication
template Final_Unit_Indication_AVP mw_final_Unit_Indication_Restriction_Filter_Rule(
template (present) Final_Unit_Action_AVP p_final_Unit_Action := ?,
template Redirect_Server_AVP p_redirect_Server := *,
template (present) Restriction_Filter_Rule_AVP p_restriction_Filter_Rule
) modifies mw_final_Unit_Indication := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_final_Unit_Indication_AVP_Code),
final_Unit_Action := p_final_Unit_Action,
restriction_Filter_Rule := { p_restriction_Filter_Rule },
filter_Id := *,
redirect_Server := p_redirect_Server
} // End of template mw_final_Unit_Indication_Restriction_Filter_Rule
template Final_Unit_Indication_AVP mw_final_Unit_Indication_Filter_Id(
template (present) Final_Unit_Action_AVP p_final_Unit_Action := ?,
template Redirect_Server_AVP p_redirect_Server := *,
template (present) Filter_Id_AVP p_filter_Id
) modifies mw_final_Unit_Indication := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_final_Unit_Indication_AVP_Code),
final_Unit_Action := p_final_Unit_Action,
restriction_Filter_Rule := *,
filter_Id := { p_filter_Id },
redirect_Server := p_redirect_Server
} // End of template mw_final_Unit_Indication_Filter_Id
template (present) Final_Unit_Action_AVP mw_final_Unit_Action(
template (present) Final_Unit_Action_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_final_Unit_Action_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_final_Unit_Action
template (present) Redirect_Server_AVP mw_redirect_Server(
template (present) Redirect_Address_Type_AVP p_redirect_Address_Type,
template (present) Redirect_Server_Address_AVP p_redirect_Server_Address
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_redirect_Server_AVP_Code),
redirect_Address_Type := p_redirect_Address_Type,
redirect_Server_Address := p_redirect_Server_Address
} // End of template mw_redirect_Server
template (present) Redirect_Address_Type_AVP mw_redirect_Address_Type(
template (present) Redirect_Address_Ty_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_redirect_Address_Type_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_redirect_Address_Type
template (present) Redirect_Server_Address_AVP mw_redirect_Server_Address(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_redirect_Server_Address_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_redirect_Server_Address
template (present) Used_Service_Unit_AVP mw_used_Service_Unit_tariff_Changes(
template (present) Tariff_Change_Usage_AVP p_tariff_Change_Usage := ?
) modifies mw_used_Service_Unit_AVP_dummy := {
tariff_Change_Usage := p_tariff_Change_Usage
} // End of template mw_used_Service_Unit_tariff_Changes
template (present) Used_Service_Unit_AVP mw_used_Service_Unit_ReportingReason(
template (present) Reporting_Reason_AVP p_reporting_Reason := ?
) modifies mw_used_Service_Unit_AVP_dummy := {
reporting_Reason := p_reporting_Reason
} // End of template mw_used_Service_Unit_Reporting_Reason
template (present) Termination_Cause_AVP mw_terminationCause(
template (present) Termination_Cause_Type p_avpData := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_termination_Cause_AVP_Code),
aVP_Data := p_avpData
} // End of template mw_terminationCause
} // End of group Ro_avps_templates_receive
} // End of group Ro_avps_templates
group RFC3588_AVPS {
group RFC3588_message_templates_send {
/**
* @desc The Event_Timestamp Attribute send template
* @param p_time The time that the reported event occurred, in seconds (since January 1, 1900 00:00 UTC)
*
* @see RFC3588 Clause 8.21. Event-Timestamp AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Event_Timestamp_AVP m_event_Timestamp(
in template (value) Time p_time
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_event_Timestamp_AVP_Code, 4),
aVP_Data := p_time
} // End of template m_event_Timestamp
/**
* @desc The Acct_Application_Id send template
* @param p_aVP_Data UInt32
*/
template (value) Acct_Application_Id_AVP m_acct_Application_Id(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_acct_Application_Id_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_acct_Application_Id
/**
* @desc The Auth_Application_Id send template
* @param p_aVP_Data UInt32
*/
template (value) Auth_Application_Id_AVP m_auth_Application_Id(
in template (value) UInt32 p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_acct_Application_Id_AVP_Code, 4),
aVP_Data := p_aVP_Data
} // End of template m_acct_Application_Id
} // End of group RFC3588_message_templates_send
group RFC3588_message_templates_receive {
/**
* @desc The Event_Timestamp Attribute receive template
* @param p_time The time that the reported event occurred, in seconds (since January 1, 1900 00:00 UTC)
*
* @see RFC3588 Clause 8.21. Event-Timestamp AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Event_Timestamp_AVP mw_event_Timestamp(
template (present) Time p_time := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_event_Timestamp_AVP_Code),
aVP_Data := p_time
} // End of template mw_event_Timestamp
/**
* @desc The Acct_Application_Id receive template
* @param p_aVP_Data UInt32
*/
template (present) Acct_Application_Id_AVP mw_acct_Application_Id(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_acct_Application_Id_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_acct_Application_Id
/**
* @desc The Auth_Application_Id receive template
* @param p_aVP_Data UInt32
*/
template (present) Auth_Application_Id_AVP mw_auth_Application_Id(
template (present) UInt32 p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_auth_Application_Id_AVP_Code),
aVP_Data := p_aVP_Data
} // End of template mw_acct_Application_Id
} // End of group RFC3588_message_templates_receive
} // End of group RFC3588_AVPS
group RFC5580_AVPS { // FIXME To be moved in TTCN-3 module LibDiameter_Types_GiSGi_AVPs
group RFC5580_message_templates_send {
/**
* @desc The Operator-Name Attribute send template
* @param p_namespace_Id Namespace ID
* @param p_operator_Name Contains the operator namespace identifier AND an Access Network Operator Name
*
* @see RFC5580 Clause 4.1. Operator-Name Attribute
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Operator_Name_AVP m_operator_Name_AVP(
in template (value) UInt8 p_namespace_Id,
in template (value) UTF8String p_operator_Name
) := {
aVP_Header := m_aVP_HeaderVid_Mbit0(c_operator_Name_AVP_Code, 1 + f_getUTF8StringLength(valueof(p_operator_Name))),
namespace_Id := p_namespace_Id,
operator_Name := p_operator_Name
} // End of template m_operator_Name_AVP
/**
* @desc The Operator-Name Attribute send template
* @param p_index Allows this attribute to provide information relating to the information included in the Location- Data Attribute to which it refers (via the Index)
* @param p_code Indicates the content of the location profile carried in the Location-Data Attribute
* @param p_entity Refers to as an unsigned 8-bit integer value
* @param p_sighting_Time Indicates when the location information was accurate
* @param p_time_to_Live Gives a hint regarding for how long location information should be considered current
* @param p_method Describes the way that the location information was determined
*
* @see RFC5580 Clause 4.2. Location-Information Attribute
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Location_Information_AVP m_location_Information_AVP(
in template (value) UInt16 p_index,
in template (value) UInt8 p_code,
in template (value) UInt8 p_entity,
in template (value) UInt64 p_sighting_Time,
in template (value) UInt64 p_time_to_Live,
in template (value) UTF8String p_method
) := {
aVP_Header := m_aVP_HeaderVid_Mbit0(c_location_Information_AVP_Code, 20 + f_getUTF8StringLength(valueof(p_method))),
index := p_index,
code := p_code,
entity := p_entity,
sighting_Time := p_sighting_Time,
time_to_Live := p_time_to_Live,
method := p_method
} // End of template m_location_Information_AVP
/**
* @desc The Location-Data Attribute send template
* @param p_index
* @param p_aVP_Data
*
* @see RFC5580 Clause 4.3. Location-Data Attribute
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (value) Location_Data_AVP m_location_Data_AVP(
in template (value) UInt16 p_index,
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit0(c_location_Data_AVP_Code, 2 + f_getUTF8StringLength(valueof(p_aVP_Data))),
index := p_index,
aVP_Data := p_aVP_Data
} // End of template Location_Data_AVP
} // End of group RFC5580_message_templates_send
group RFC5580_message_templates_receive {
/**
* @desc The Operator-Name Attribute send template
* @param p_namespace_Id Namespace ID
* @param p_operator_Name Contains the operator namespace identifier AND an Access Network Operator Name
*
* @see RFC5580 Clause 4.1. Operator-Name Attribute
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Operator_Name_AVP mw_operator_Name_AVP(
template (present) UInt8 p_namespace_Id := ?,
template (present) UTF8String p_operator_Name := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit0(c_operator_Name_AVP_Code),
namespace_Id := p_namespace_Id,
operator_Name := p_operator_Name
} // End of template mw_operator_Name_AVP
/**
* @desc The Operator-Name Attribute send template
* @param p_index Allows this attribute to provide information relating to the information included in the Location- Data Attribute to which it refers (via the Index)
* @param p_code Indicates the content of the location profile carried in the Location-Data Attribute
* @param p_entity Refers to as an unsigned 8-bit integer value
* @param p_sighting_Time Indicates when the location information was accurate
* @param p_time_to_Live Gives a hint regarding for how long location information should be considered current
* @param p_method Describes the way that the location information was determined
*
* @see RFC5580 Clause 4.2. Location-Information Attribute
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Location_Information_AVP mw_location_Information_AVP(
template (present) UInt16 p_index := ?,
template (present) UInt8 p_code := ?,
template (present) UInt8 p_entity := ?,
template (present) UInt64 p_sighting_Time := ?,
template (present) UInt64 p_time_to_Live := ?,
template (present) UTF8String p_method := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit0(c_location_Information_AVP_Code),
index := p_index,
code := p_code,
entity := p_entity,
sighting_Time := p_sighting_Time,
time_to_Live := p_time_to_Live,
method := p_method
} // End of template mw_location_Information_AVP
/**
* @desc The Location-Data Attribute send template
* @param p_index
* @param p_aVP_Data
*
* @see RFC5580 Clause 4.3. Location-Data Attribute
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
template (present) Location_Data_AVP mw_location_Data_AVP(
template (present) UInt16 p_index := ?,
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_Header_Vbit0Mbit0(c_location_Data_AVP_Code),
index := p_index,
aVP_Data := p_aVP_Data
} // End of template mw_location_Data_AVP
} // End of group RFC5580_message_templates_receive
} // End of group RFC5580_AVPS
group GiSGi_message_templates { // FIXME To be moved in TTCN-3 module DiameterGiSGi_Templates
group GiSGi_message_templates_send {
template (value) ThreeGPP_Charging_Id_AVP m_threeGPP_Charging_Id_AVP(
in template (value) octetstring p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_threeGPP_Charging_Id_AVP_Code, f_getOctetStringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_threeGPP_Charging_Id_AVP
/**
* @desc ThreeGPP_PDP_Type_AVP send template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (value) ThreeGPP_PDP_Type_AVP m_threeGPP_PDP_Type_AVP(
in template (value) ThreeGPP_PDP_Type p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_threeGPP_PDP_Type_AVP_Code, 4, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_threeGPP_PDP_Type_AVP
/**
* @desc ThreeGPP_IMSI_MCC_MNC_AVP send template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (value) ThreeGPP_IMSI_MCC_MNC_AVP m_threeGPP_IMSI_MCC_MNC_AVP(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_threeGPP_IMSI_MCC_MNC_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_threeGPP_IMSI_MCC_MNC_AVP
/**
* @desc ThreeGPP_GGSN_MCC_MNC_AVP send template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (value) ThreeGPP_GGSN_MCC_MNC_AVP m_threeGPP_GGSN_MCC_MNC_AVP(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_threeGPP_GGSN_MCC_MNC_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_threeGPP_GGSN_MCC_MNC_AVP
/**
* @desc ThreeGPP_NSAPI_AVP send template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (value) ThreeGPP_NSAPI_AVP m_threeGPP_NSAPI_AVP(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_threeGPP_NSAPI_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_threeGPP_NSAPI_AVP
/**
* @desc ThreeGPP_Session_Stop_Indicator_AVP send template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (value) ThreeGPP_Session_Stop_Indicator_AVP m_threeGPP_Session_Stop_Indicator_AVP(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_threeGPP_Session_Stop_Indicator_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_threeGPP_Session_Stop_Indicator_AVP
/**
* @desc ThreeGPP_Selection_Mode_AVP send template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (value) ThreeGPP_Selection_Mode_AVP m_threeGPP_Selection_Mode_AVP(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_threeGPP_Selection_Mode_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_threeGPP_Selection_Mode_AVP
/**
* @desc ThreeGPP_Charging_Characteristics_AVP send template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (value) ThreeGPP_Charging_Characteristics_AVP m_threeGPP_Charging_Characteristics_AVP(
in template (value) UTF8String p_aVP_Data
) := {
aVP_Header := m_aVP_HeaderVid_Mbit1(c_threeGPP_Charging_Characteristics_AVP_Code, f_getUTF8StringLength(valueof(p_aVP_Data)), c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template m_threeGPP_Charging_Characteristics_AVP
} // End of group GiSGi_message_templates_send
group GiSGi_message_templates_receive {
/**
* @desc ThreeGPP_Charging_Id_AVP receive template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (present) ThreeGPP_Charging_Id_AVP mw_threeGPP_Charging_Id_AVP(
template (present) octetstring p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_threeGPP_Charging_Id_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_threeGPP_Charging_Id_AVP
/**
* @desc ThreeGPP_PDP_Type_AVP receive template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (present) ThreeGPP_PDP_Type_AVP mw_threeGPP_PDP_Type_AVP(
template (present) ThreeGPP_PDP_Type p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_threeGPP_PDP_Type_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_threeGPP_PDP_Type_AVP
/**
* @desc ThreeGPP_IMSI_MCC_MNC_AVP receive template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (present) ThreeGPP_IMSI_MCC_MNC_AVP mw_threeGPP_IMSI_MCC_MNC_AVP(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_threeGPP_IMSI_MCC_MNC_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_threeGPP_IMSI_MCC_MNC_AVP
/**
* @desc ThreeGPP_GGSN_MCC_MNC_AVP receive template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (present) ThreeGPP_GGSN_MCC_MNC_AVP mw_threeGPP_GGSN_MCC_MNC_AVP(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_threeGPP_GGSN_MCC_MNC_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_threeGPP_GGSN_MCC_MNC_AVP
/**
* @desc ThreeGPP_NSAPI_AVP receive template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (present) ThreeGPP_NSAPI_AVP mw_threeGPP_NSAPI_AVP(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_threeGPP_NSAPI_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_threeGPP_NSAPI_AVP
/**
* @desc ThreeGPP_Session_Stop_Indicator_AVP receive template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (present) ThreeGPP_Session_Stop_Indicator_AVP mw_threeGPP_Session_Stop_Indicator_AVP(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_threeGPP_Session_Stop_Indicator_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_threeGPP_Session_Stop_Indicator_AVP
/**
* @desc ThreeGPP_Selection_Mode_AVP receive template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (present) ThreeGPP_Selection_Mode_AVP mw_threeGPP_Selection_Mode_AVP(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_threeGPP_Selection_Mode_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_threeGPP_Selection_Mode_AVP
/**
* @desc ThreeGPP_Charging_Characteristics_AVP receive template
* @param p_aVP_Data
*
* @see ETSI TS 129 061 V10.12.0 Table 9a: Gi/SGi specific AVPs
*/
template (present) ThreeGPP_Charging_Characteristics_AVP mw_threeGPP_Charging_Characteristics_AVP(
template (present) UTF8String p_aVP_Data := ?
) := {
aVP_Header := mw_aVP_HeaderVid_Mbit1(c_threeGPP_Charging_Characteristics_AVP_Code, ?, c_vendId3gpp),
aVP_Data := p_aVP_Data
} // End of template mw_threeGPP_Charging_Characteristics_AVP
} // End of group GiSGi_message_templates_receive
} // End of group GiSGi_message_templates
/**
* @desc Type convertion functions to reduce warnings due to type mismaches
*/
group functionsForTemplates {
/**
* @desc Calculate the length of the Values_Digits/Exponent AVPs
* @param p_value_Digits Values_Digits AVP value
* @param p_exponent Exponent AVP value
* @return The length of the Values_Digits/Exponent AVP
* @verdict Unchanged
*/
function f_getValuesDigitsAndExponentLength(
in template (value) Value_Digits_AVP p_value_Digits,
in template (omit) Exponent_AVP p_exponent
) return AVP_Length {
var AVP_Length v_length := f_getByteAlignedLength(p_value_Digits.aVP_Header.aVP_len);
log(p_value_Digits.aVP_Header.aVP_len,"p_value_Digits.aVP_Header.aVP_len");
log(v_length,"v_length");
if (ispresent(p_exponent)) {
v_length := v_length + f_getByteAlignedLength(p_exponent.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getValuesDigitsAndExponentLength
/**
* @desc Calculate the length of the AoC_Information_AVP to set up the Diameter header
* @param p_aoc_Cost_Information_AVP Holds accumulated and incremental cost information for the AoC service
* @param p_tariff_Information_AVP Holds a tariff definition either from the local provider or from 3rd party provider
* @param p_aoc_Subscription_Information Holds the subscription and formatting parameters received from HSS
* @return The length of the AoC_Information_AVP
* @verdict Unchanged
*/
function f_getAoCInformationAVPLength(
in template (omit) AoC_Cost_Information_AVP p_aoc_Cost_Information_AVP,
in template (omit) Tariff_Information_AVP p_tariff_Information_AVP,
in template (omit) AoC_Subscription_Information_AVP p_aoc_Subscription_Information
) return AVP_Length {
var AVP_Length v_length := 0;
if (ispresent(p_aoc_Cost_Information_AVP)) {
v_length := f_getByteAlignedLength(p_aoc_Cost_Information_AVP.aVP_Header.aVP_len);
}
if (ispresent(p_tariff_Information_AVP)) {
v_length := v_length + f_getByteAlignedLength(p_tariff_Information_AVP.aVP_Header.aVP_len);
}
if (ispresent(p_aoc_Subscription_Information)) {
v_length := v_length + f_getByteAlignedLength(p_aoc_Subscription_Information.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getAoCInformationAVPLength
/**
* @desc Calculate the length of the AoC_Cost_Information_AVP to set up the Diameter header
* @param p_accumulated_Cost Holds the accumulated cost for the ongoing session
* @param p_incremental_Cost Holds the incremental cost since last AoC interaction for the ongoing session
* @return The length of the AoC_Cost_Information_AVP
* @verdict Unchanged
*/
function f_getAoCCostInformationAVPLength(
in template (omit) Accumulated_Cost_AVP p_accumulated_Cost,
in template (omit) Incremental_Cost_AVP p_incremental_Cost,
in template (omit) Currency_Code_AVP p_currency_Code
) return AVP_Length {
var AVP_Length v_length := 0;
if (ispresent(p_accumulated_Cost)) {
v_length := f_getByteAlignedLength(p_accumulated_Cost.aVP_Header.aVP_len);
}
if (ispresent(p_incremental_Cost)) {
v_length := v_length + f_getByteAlignedLength(p_incremental_Cost.aVP_Header.aVP_len);
}
if (ispresent(p_currency_Code)) {
v_length := v_length + f_getByteAlignedLength(p_currency_Code.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getAoCCostInformationAVPLength
/**
* @desc Calculate the length of the Current_Tariff_AVP to set up the Diameter header
* @param p_scale_Factor Holds simple multiplication factor in the same format as Unit-Value
* @param p_rate_Element Holds simple rate element of one dimension
* @return The length of the Current_Tariff_AVP
* @verdict Unchanged
*/
function f_getTariffAVPLength(
in template (omit) Scale_Factor_AVP p_scale_Factor,
in template (omit) Rate_Element_AVP p_rate_Element
) return AVP_Length {
var AVP_Length v_length := 0;
if (ispresent(p_scale_Factor)) {
v_length := f_getByteAlignedLength(p_scale_Factor.aVP_Header.aVP_len);
}
if (ispresent(p_rate_Element)) {
v_length := v_length + f_getByteAlignedLength(p_rate_Element.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getTariffAVPLength
function f_getRateElementAVPLength(
in template (value) CC_Unit_Type_AVP p_cc_Unit_Type_AVP
) return AVP_Length {
var AVP_Length v_length := f_getByteAlignedLength(p_cc_Unit_Type_AVP.aVP_Header.aVP_len);
return v_length;
} // End of function f_getRateElementAVPLength
/**
* @desc Calculate the length of the Current_Tariff_AVP to set up the Diameter header
* @param p_scale_Factor Holds simple multiplication factor in the same format as Unit-Value
* @return The length of the Current_Tariff_AVP
* @verdict Unchanged
*/
function f_getTariffInformationAVPLength(
in template (value) Current_Tariff_AVP p_currentTariff,
in template (omit) Tariff_Time_Change_AVP p_tariff_Time_Change := omit,
in template (omit) Next_Tariff_AVP p_next_Tariff := omit
) return AVP_Length {
var AVP_Length v_length := f_getByteAlignedLength(p_currentTariff.aVP_Header.aVP_len);
if (ispresent(p_tariff_Time_Change)) {
v_length := v_length + f_getByteAlignedLength(p_tariff_Time_Change.aVP_Header.aVP_len);
}
if (ispresent(p_next_Tariff)) {
v_length := v_length + f_getByteAlignedLength(p_next_Tariff.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getTariffInformationAVPLength
/**
* @desc Calculate the length of the PS_Furnish_Charging_Information_AVP to set up the Diameter header
* @param p_threeGPP_Charging_Id
* @param p_ps_Free_Format_Data
* @return The length of the PS_Furnish_Charging_Information_AVP
* @verdict Unchanged
*/
function f_getPSFurnishChargingInformationAVPLength(
in template (value) ThreeGPP_Charging_Id_AVP p_threeGPP_Charging_Id,
in template (value) PS_Free_Format_Data_AVP p_ps_Free_Format_Data
) return AVP_Length {
var AVP_Length v_length :=
f_getByteAlignedLength(p_threeGPP_Charging_Id.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_ps_Free_Format_Data.aVP_Header.aVP_len);
return v_length;
} // End of function f_getPSFurnishChargingInformationAVPLength
/**
* @desc Calculate the length of the Offline_Charging_AVP to set up the Diameter header
* @param p_quota_Consumption_Time
* @param p_time_Quota_Mechanism
* @return The length of the Offline_Charging_AVP
* @verdict Unchanged
*/
function f_getOfflineChargingLength(
in template (value) Quota_Consumption_Time_AVP p_quota_Consumption_Time,
in template (value) Time_Quota_Mechanism_AVP p_time_Quota_Mechanism
) return AVP_Length {
var AVP_Length v_length :=
f_getByteAlignedLength(p_quota_Consumption_Time.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_time_Quota_Mechanism.aVP_Header.aVP_len);
return v_length;
} // End of function f_getOfflineChargingLength
/**
* @desc Calculate the length of the Traffic_Data_Volumes_AVP to set up the Diameter header
* @param p_accounting_Output_Octets
* @param p_accounting_Output_Octets
* @return The length of the Traffic_Data_Volumes_AVP
* @verdict Unchanged
*/
function f_getTrafficDataVolumesAVPLength(
in template (value) Accounting_Input_Octets_AVP p_accounting_Input_Octets,
in template (value) Accounting_Output_Octets_AVP p_accounting_Output_Octets
) return AVP_Length {
var AVP_Length v_length :=
f_getByteAlignedLength(p_accounting_Input_Octets.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_accounting_Output_Octets.aVP_Header.aVP_len);
return v_length;
} // End of function f_getOfflineChargingLength
/**
* @desc Calculate the length of the Time_Quota_Mechanism_AVP to set up the Diameter header
* @param p_time_Quota_Type
* @param p_base_Time_Interval
* @return The length of the Time_Quota_Mechanism_AVP
* @verdict Unchanged
*/
function f_getTimeQuotaMechanismAVPLength(
in template (omit) Time_Quota_Type_AVP p_time_Quota_Type,
in template (omit) Base_Time_Interval_AVP p_base_Time_Interval
) return AVP_Length {
var AVP_Length v_length := 0;
if (ispresent(p_time_Quota_Type)) {
v_length := f_getByteAlignedLength(p_time_Quota_Type.aVP_Header.aVP_len);
}
if (ispresent(p_base_Time_Interval)) {
v_length := v_length + f_getByteAlignedLength(p_base_Time_Interval.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getTimeQuotaMechanismAVPLength
/**
* @desc Calculate the length of the AF_Correlation_Information_AVP to set up the Diameter header
* @param p_af_Charging_Identifier
* @param p_flows Flow identifiers generated by the AF and received by P-GW over Rx/Gx as defined in TS 29.214 [214] and TS 29.212 [215]
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.11 AF-Correlation-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
function f_getAFCorrelationInformationAVPLength(
in template (omit) AF_Charging_Identifier_AVP p_af_Charging_Identifier,
in template (omit) AF_Correlation_Information_AVP.flows p_flows
) return AVP_Length {
var AVP_Length v_length := 0;
var integer i;
if (ispresent(p_af_Charging_Identifier)) {
v_length := f_getByteAlignedLength(p_af_Charging_Identifier.aVP_Header.aVP_len);
}
if (ispresent(p_flows)) {
for (i := 0; i < lengthof(p_flows); i := i + 1) {
v_length := v_length + f_getByteAlignedLength(p_flows[i].aVP_Header.aVP_len);
}
}
return v_length;
} // End of function f_getAFCorrelationInformationAVPLength
/**
* @desc Calculate the length of the AoC_Subscription_Information_AVP to set up the Diameter header
* @param p_aoc_Service
* @param p_aoc_Format
* @param p_aoc_Service
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.20 AoC-Subscription-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
function f_getAoCSubscriptionInformationAVPLength(
in template (omit) AoC_Subscription_Information_AVP.aoc_Service p_aoc_Service,
in template (omit) AoC_Format_AVP p_aoc_Format,
in template (omit) Preferred_AoC_Currency_AVP p_preferred_AoC_Currency
) return AVP_Length {
var AVP_Length v_length := 0;
var integer i;
if (ispresent(p_aoc_Service)) {
for (i := 0; i < lengthof(p_aoc_Service); i := i + 1) {
v_length := v_length + f_getByteAlignedLength(p_aoc_Service[i].aVP_Header.aVP_len);
}
}
if (ispresent(p_aoc_Format)) {
v_length := v_length + f_getByteAlignedLength(p_aoc_Format.aVP_Header.aVP_len);
}
if (ispresent(p_preferred_AoC_Currency)) {
v_length := v_length + f_getByteAlignedLength(p_preferred_AoC_Currency.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getAoCSubscriptionInformationAVPLength
/**
* @desc Calculate the length of the AoC_Service_AVP to set up the Diameter header
* @param p_aoc_Service_Obligatory_Type
* @param p_aoc_Service_Type
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.17 AoC-Service AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
function f_getAoCServiceAVPLength(
in template (omit) AoC_Service_Obligatory_Type_AVP p_aoc_Service_Obligatory_Type,
in template (omit) AoC_Service_Type_AVP p_aoc_Service_Type
) return AVP_Length {
var AVP_Length v_length := 0;
if (ispresent(p_aoc_Service_Obligatory_Type)) {
v_length := f_getByteAlignedLength(p_aoc_Service_Obligatory_Type.aVP_Header.aVP_len);
}
if (ispresent(p_aoc_Service_Type)) {
v_length := v_length + f_getByteAlignedLength(p_aoc_Service_Type.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getAoCServiceAVPLength
/**
* @desc Calculate the length of the Remaining_Balance_AVP to set up the Diameter header
* @param p_unit_Value
* @param p_currency_Code
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.172 Remaining-Balance AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.2: 3GPP specific AVPs
*/
function f_getRemaininBalanceAVPLength(
in template (value) Unit_Value_AVP p_unit_Value,
in template (value) Currency_Code_AVP p_currency_Code
) return AVP_Length {
var AVP_Length v_length := f_getByteAlignedLength(p_unit_Value.aVP_Header.aVP_len);
v_length := v_length + f_getByteAlignedLength(p_currency_Code.aVP_Header.aVP_len);
return v_length;
} // End of function f_getRemaininBalanceAVPLength
/**
* @desc Calculate the length of the WLAN_Radio_Container_AVP to set up the Diameter header
* @param p_operator_Name
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.247 WLAN-Radio-Container AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
function f_getWLANRadioContainerAVPLength(
in template (value) Operator_Name_AVP p_operator_Name
) return AVP_Length {
var AVP_Length v_length := f_getByteAlignedLength(p_operator_Name.aVP_Header.aVP_len);
return v_length;
} // End of function f_getWLANRadioContainerAVPLength
/**
* @desc Calculate the length of the Event_Type_AVP to set up the Diameter header
* @param p_sip_Method
* @param p_event
* @param p_aVP_Data
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.65 Event-Type AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
function f_getEventTypeAVPLength(
in template (omit) SIP_Method_AVP p_sip_Method,
in template (omit) Event_AVP p_event,
in template (omit) Expires_AVP p_aVP_Data
) return AVP_Length {
var AVP_Length v_length := 0;
if (ispresent(p_sip_Method)) {
v_length := f_getByteAlignedLength(p_sip_Method.aVP_Header.aVP_len);
}
if (ispresent(p_event)) {
v_length := v_length + f_getByteAlignedLength(p_event.aVP_Header.aVP_len);
}
if (ispresent(p_aVP_Data)) {
v_length := v_length + f_getByteAlignedLength(p_aVP_Data.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getEventTypeAVPLength
/**
* @desc Calculate the length of the Time_Stamps AVP to set up the Diameter header
* @param p_sip_Request_Timestamp
* @param p_sip_Response_Timestamp
* @param p_sip_Request_Timestamp_Fraction
* @param p_sip_Response_Timestamp_Fraction
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.231 Time-Stamps AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
function f_getTimeStampsAVPLength(
in template (omit) SIP_Request_Timestamp_AVP p_sip_Request_Timestamp,
in template (omit) SIP_Response_Timestamp_AVP p_sip_Response_Timestamp,
in template (omit) SIP_Request_Timestamp_Fraction_AVP p_sip_Request_Timestamp_Fraction,
in template (omit) SIP_Response_Timestamp_Fraction_AVP p_sip_Response_Timestamp_Fraction
) return AVP_Length {
var AVP_Length v_length := 0;
if (ispresent(p_sip_Request_Timestamp)) {
v_length := f_getByteAlignedLength(p_sip_Request_Timestamp.aVP_Header.aVP_len);
}
if (ispresent(p_sip_Response_Timestamp)) {
v_length := v_length + f_getByteAlignedLength(p_sip_Response_Timestamp.aVP_Header.aVP_len);
}
if (ispresent(p_sip_Request_Timestamp_Fraction)) {
v_length := v_length + f_getByteAlignedLength(p_sip_Request_Timestamp_Fraction.aVP_Header.aVP_len);
}
if (ispresent(p_sip_Response_Timestamp_Fraction)) {
v_length := v_length + f_getByteAlignedLength(p_sip_Response_Timestamp_Fraction.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getTimeStampsAVPLength
/**
* @desc Calculate the length of the Application_Server_Information_AVP to set up the Diameter header
* @param p_aVP_Data Holds the used bearer service for the PSTN leg
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.24 Application-Server-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
function f_getApplicationServerInformationAVPLength(
in template (omit) Application_Server_AVP p_application_Server,
in template (omit) Application_provided_Called_Party_Address_AVP p_application_Provided_Called_Party_Address
) return AVP_Length {
var AVP_Length v_length := 0;
if (ispresent(p_application_Server)) {
v_length := f_getByteAlignedLength(p_application_Server.aVP_Header.aVP_len);
}
if (ispresent(p_application_Provided_Called_Party_Address)) {
v_length := v_length + f_getByteAlignedLength(p_application_Provided_Called_Party_Address.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getApplicationServerInformationAVPLength
/**
* @desc Calculate the length of the Application_Server_Information_AVP to set up the Diameter header
* @param p_originating_IOI
* @param p_terminating_IOI
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.80 Inter-Operator-Identifier AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
function f_getInterOperatorIdentifierAVPLength(
in template (omit) Originating_IOI_AVP p_originating_IOI,
in template (omit) Terminating_IOI_AVP p_terminating_IOI
) return AVP_Length {
var AVP_Length v_length := 0;
if (ispresent(p_originating_IOI)) {
v_length := f_getByteAlignedLength(p_originating_IOI.aVP_Header.aVP_len);
}
if (ispresent(p_terminating_IOI)) {
v_length := v_length + f_getByteAlignedLength(p_terminating_IOI.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getInterOperatorIdentifierAVPLength
/**
* @desc Calculate the length of the Message_Body_AVP to set up the Diameter header
* @param p_content_Type
* @param p_content_Length
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.103 Message-Body AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
function f_getMessageBodyAVPLength(
in template (value) Content_Type_AVP p_content_Type,
in template (value) Content_Length_AVP p_content_Length
) return AVP_Length {
var AVP_Length v_length := f_getByteAlignedLength(p_content_Type.aVP_Header.aVP_len) +
f_getByteAlignedLength(p_content_Length.aVP_Header.aVP_len);
return v_length;
} // End of function f_getMessageBodyAVPLength
/**
* @desc Calculate the length of the SDP_TimeStamps_AVP to set up the Diameter header
* @param p_sdp_Offer_Timestamp_AVP
* @param p_sdp_Answer_Timestamp_AVP
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.58 Early-Media-Description AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
function f_getSDPTimeStampsAVPLength(
in template (omit) SDP_Offer_Timestamp_AVP p_sdp_Offer_Timestamp,
in template (omit) SDP_Answer_Timestamp_AVP p_sdp_Answer_Timestamp
) return AVP_Length {
var AVP_Length v_length := 0;
if (ispresent(p_sdp_Offer_Timestamp)) {
v_length := f_getByteAlignedLength(p_sdp_Offer_Timestamp.aVP_Header.aVP_len);
}
if (ispresent(p_sdp_Answer_Timestamp)) {
v_length := v_length + f_getByteAlignedLength(p_sdp_Answer_Timestamp.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getSDPTimeStampsAVPLength
/**
* @desc Calculate the length of the Service_Generic_Information_AVP to set up the Diameter header
* @param p_application_Server_ID
* @param p_application_Service_Type
* @param p_application_Session_ID
* @param p_delivery_Status
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.191 Service-Generic-Information AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
* @see OMA-DDS-Charging_Data-V1_0-20110201-A
*/
function f_getServiceGenericInformationAVPLength(
in template (omit) Application_Server_ID_AVP p_application_Server_ID,
in template (omit) Application_Service_Type_AVP p_application_Service_Type,
in template (omit) Application_Session_ID_AVP p_application_Session_ID,
in template (omit) Delivery_Status_AVP p_delivery_Status
) return AVP_Length {
var AVP_Length v_length := 0;
if (ispresent(p_application_Server_ID)) {
v_length := f_getByteAlignedLength(p_application_Server_ID.aVP_Header.aVP_len);
}
if (ispresent(p_application_Service_Type)) {
v_length := v_length + f_getByteAlignedLength(p_application_Service_Type.aVP_Header.aVP_len);
}
if (ispresent(p_application_Session_ID)) {
v_length := v_length + f_getByteAlignedLength(p_application_Session_ID.aVP_Header.aVP_len);
}
if (ispresent(p_delivery_Status)) {
v_length := v_length + f_getByteAlignedLength(p_delivery_Status.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getServiceGenericInformationAVPLength
function f_getCCMoneyAVPLength(
in template (value) Unit_Value_AVP p_unit_Value,
in template (omit) Currency_Code_AVP p_currency_Code
) return AVP_Length {
var AVP_Length v_length := f_getByteAlignedLength(p_unit_Value.aVP_Header.aVP_len);
if (ispresent(p_currency_Code)) {
v_length := v_length + f_getByteAlignedLength(p_currency_Code.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getCCMoneyAVPLength
function f_getCostInformationAVPLength(
in template (value) Unit_Value_AVP p_unit_Value,
in template (value) Currency_Code_AVP p_currency_Code,
in template (omit) Cost_Unit_AVP p_cost_Unit
) return AVP_Length {
var AVP_Length v_length := f_getByteAlignedLength(p_unit_Value.aVP_Header.aVP_len) + f_getByteAlignedLength(p_currency_Code.aVP_Header.aVP_len);
if (ispresent(p_cost_Unit)) {
v_length := v_length + f_getByteAlignedLength(p_cost_Unit.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getCostInformationAVPLength
/**
* @desc Calculate the length of the Envelope_AVP to set up the Diameter header
* @param p_envelope_Start_Time
* @param p_envelope_End_Time
* @param p_cc_Total_Octets
* @param p_cc_Input_Octets
* @param p_cc_Output_Octets
* @param p_cc_Service_Specific_Units
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.2.59 Envelope AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: Use Of IETF Diameter AVPs
*/
function f_getEnvelopeAVPLength(
in template (value) Envelope_Start_Time_AVP p_envelope_Start_Time,
in template (omit) Envelope_Start_Time_AVP p_envelope_End_Time,
in template (omit) CC_Total_Octets_AVP p_cc_Total_Octets,
in template (omit) CC_Input_Octets_AVP p_cc_Input_Octets,
in template (omit) CC_Output_Octets_AVP p_cc_Output_Octets,
in template (omit) CC_Service_Specific_Units_AVP p_cc_Service_Specific_Units
) return AVP_Length {
var AVP_Length v_length := f_getByteAlignedLength(p_envelope_Start_Time.aVP_Header.aVP_len);
if (ispresent(p_envelope_End_Time)) {
v_length := v_length + f_getByteAlignedLength(p_envelope_End_Time.aVP_Header.aVP_len);
}
if (ispresent(p_cc_Total_Octets)) {
v_length := v_length + f_getByteAlignedLength(p_cc_Total_Octets.aVP_Header.aVP_len);
}
if (ispresent(p_cc_Input_Octets)) {
v_length := v_length + f_getByteAlignedLength(p_cc_Input_Octets.aVP_Header.aVP_len);
}
if (ispresent(p_cc_Output_Octets)) {
v_length := v_length + f_getByteAlignedLength(p_cc_Output_Octets.aVP_Header.aVP_len);
}
if (ispresent(p_cc_Service_Specific_Units)) {
v_length := v_length + f_getByteAlignedLength(p_cc_Service_Specific_Units.aVP_Header.aVP_len);
}
return v_length;
} // End of function f_getEnvelopeAVPLength
/**
* @desc Calculate the length of the Multiple-Services-Credit-Control AVP to set up the Diameter header
* @param p_requested_Service_Unit
* @param p_used_Service_Unit
* @param p_service_Identifier
*
* @see ETSI TS 132 299 V10.18.0 Clause 7.1.9 Multiple-Services-Credit-Control AVP
* @see ETSI TS 132 299 V10.18.0 Table 7.1: IETF Diameter AVPs
*/
function f_getMultipleServicesCreditControlAVPLength(
in template (omit) Requested_Service_Unit_AVP p_requested_Service_Unit,
in template (omit) Multiple_Services_Credit_Control_AVP.used_Service_Unit p_used_Service_Unit,
in template (omit) Multiple_Services_Credit_Control_AVP.service_Identifier p_service_Identifier
) return AVP_Length {
var AVP_Length v_length := 0;
var integer i;
if (ispresent(p_requested_Service_Unit)) {
v_length := f_getByteAlignedLength(p_requested_Service_Unit.aVP_Header.aVP_len);
}
if (ispresent(p_used_Service_Unit)) {
for (i := 0; i < lengthof(p_used_Service_Unit); i := i + 1) {
v_length := v_length + f_getByteAlignedLength(p_used_Service_Unit[i].aVP_Header.aVP_len);
}
}
if (ispresent(p_service_Identifier)) {
for (i := 0; i < lengthof(p_service_Identifier); i := i + 1) {
v_length := v_length + f_getByteAlignedLength(p_service_Identifier[i].aVP_Header.aVP_len);
}
}
return v_length;
} // End of function f_getMultipleServicesCreditControlAVPLength
} // End of group functionsForTemplates
} // End of module DiameterRfRo_Templates DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn/DiameterRfRo_TestCases.ttcn 0000664 0000000 0000000 00001531250 13523273236 0031242 0 ustar 00root root 0000000 0000000 /**
* @author STF 490
* @version $Id$
* @desc This module provides test cases
* for SIP-IMS-RfRo-DIAMETER tests.
*/
module DiameterRfRo_TestCases
{
//LibCommon
import from LibCommon_Sync all ;
import from LibCommon_VerdictControl all;
//LibDiameter
import from LibDiameter_TypesAndValues all;
import from LibDiameter_Interface all;
//LibSip
import from LibSip_SIPTypesAndValues {type CSeq;};
//LibIms
import from LibIms_Interface all;
//AtsIms
import from DiameterRfRo_TestConfiguration all;
import from DiameterRfRo_TestSystem all;
import from DiameterRfRo_SIP_TCFunctions all;
import from DiameterRfRo_TCFunctions all;
import from DiameterRfRo_PICS all;
import from DiameterRfRo_PIXITS all;
import from DiameterRfRo_Steps all;
import from DiameterRfRo_TestSystem all;
// 5.2.2.1. CDF Role
group TP_RF_Role {
// 5.2.2.1. CDF Role
group TP_RF_CDF_Role {
// 5.2.2.1.2 Message Syntax
group TP_RF_CDF_MS {
/**
* @desc Verify that the IUT can successfully process all mandatory AVPs in an AC-Request received due to Charging Data Transfer
*
* Pics Selection: PICS_CDF_IUT * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an AC-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Number AVP * containing an Acct-Application-Id AVP * indicating the value 3 * } * then { * the IUT sends a AC-Response * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Number AVP * containing an Acct-Application-Id AVP * indicating the value 3 * } * } ** * @version 0.0.12 * @see ETSI TS 103 374-2 V0.0.12 (2015-07) TP_RF_CDF_MS_01 */ testcase TC_RF_CDF_MS_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_ctf; // Test control if (not PICS_RF_CDF_IUT) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CDF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_ctfUp(v_diameterRf_ctf); // Start v_diameterRf_ctf.start(f_TC_CDF_MS_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Rf_ctfDown(v_diameterRf_ctf); } // End of testcase TC_RF_CDF_MS_01 /** * @desc Verify that the IUT can successfully process all mandatory AVPs in an AC-Request received due to Charging Data Transfer, * and responds with a valid AC-Answer message *
* Pics Selection: PICS_CDF_IUT * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an AC-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Number AVP * containing an Acct-Application-Id AVP * indicating the value 3 * } * then { * the IUT sends an AC-Answer * containing a Diameter-Header * containing a Version * indicating value '1' * containing a Command-Flags * containing T bit * indicating value '0' * containing r bits * indicating value '0000'. * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CDF_MS_02 */ testcase TC_RF_CDF_MS_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_ctf; // Test control if (not PICS_RF_CDF_IUT) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CDF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_ctfUp(v_diameterRf_ctf); // Start v_diameterRf_ctf.start(f_TC_CDF_MS_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Rf_ctfDown(v_diameterRf_ctf); } // End of testcase TC_RF_CDF_MS_01 } // End of group MessageSyntax // 5.2.2.1.3 Type of Charging group TP_RF_CDF_TC { /** * @desc Verify that the IUT can successfully process an AC-Request [Event] where Event Based Charging is used *
* Pics Selection: PICS_CDF_IUT and PICS_EVENT_BASED_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an AC-Request * containing an Accounting-Record-Type AVP * indicating EVENT_RECORD * containing an Event-Timestamp AVP * optionally containing Service-Information AVP * containing at least one Subscription-ID AVP * indicating the identification of the user * optionally containing IMS-Information AVP * containing Node-Functionality AVP * indicating the value 3 * optionally containing Service-Generic-Information AVP * indicating the service specific parameters * optionally containing Service-Context-Id AVP * } * then { * the IUT sends a AC-Response * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating EVENT_RECORD * containing an Accounting-Record-Number AVP * } * } ** * @version 0.0.12 * @see ETSI TS 103 374-2 V0.0.12 (2015-07) TP_RF_CDF_TC_01 */ testcase TC_RF_CDF_TC_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_ctf; // Test control if (not (PICS_RF_CDF_IUT and PICS_RF_CDF_EVENT_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CDF_IUT and PICS_RF_CDF_EVENT_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_ctfUp(v_diameterRf_ctf); // Start v_diameterRf_ctf.start(f_TC_RF_CDF_TC_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Rf_ctfDown(v_diameterRf_ctf); } // End of testcase TC_RF_CDF_TC_01 /** * @desc Verify that the IUT can successfully process an AC-Request [Start] where Session Based Charging is used *
* Pics Selection: PICS_CDF_IUT and PICS_SESSION_BASED_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an AC-Request * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Type AVP * indicating START_RECORD * containing an Accounting-Record-Number AVP * containing an Event-Timestamp AVP * containing Service-Information AVP * indicating the service specific parameters * } * then { * the IUT sends an AC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating START_RECORD * optionally containing an Acct-Interim-Interval AVP * indicating the desired intermediate charging interval. * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CDF_TC_02 */ testcase TC_RF_CDF_TC_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_ctf; // Test control if (not (PICS_RF_CDF_IUT and PICS_RF_CDF_SESSION_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CDF_IUT and PICS_RF_CDF_SESSION_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_ctfUp(v_diameterRf_ctf); // Start v_diameterRf_ctf.start(f_TC_RF_CDF_TC_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Rf_ctfDown(v_diameterRf_ctf); } // End of testcase TC_RF_CDF_TC_02 /** * @desc Verify that the IUT can successfully process an AC-Request [Interim] where Session Based Charging is used in case of charging condition change. *
* Pics Selection: PICS_CDF_IUT and PICS_SESSION_BASED_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an AC-Request * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Accounting-Record-Number AVP * containing an Event-Timestamp AVP * optionally containing Service-Information AVP * indicating Subscription-Id AVP * indicating IMS-Information AVP * } * then { * the IUT sends an AC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * optionally containing an Acct-Interim-Interval AVP * indicating the desired intermediate charging interval * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CDF_TC_03 */ testcase TC_RF_CDF_TC_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_ctf; // Test control if (not (PICS_RF_CDF_IUT and PICS_RF_CDF_SESSION_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CDF_IUT and PICS_RF_CDF_SESSION_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_ctfUp(v_diameterRf_ctf); // Start v_diameterRf_ctf.start(f_TC_RF_CDF_TC_03()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Rf_ctfDown(v_diameterRf_ctf); } // End of testcase TC_RF_CDF_TC_03 /** * @desc Verify that the IUT can successfully process an AC-Request [Interim] where Session Based Charging is used in case of Acct-Interim-Interval AVP is present in the AC Request [Start]. *
* Pics Selection: PICS_CDF_IUT and PICS_SESSION_BASED_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an AC-Request * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Type AVP * indicating START_RECORD * containing an Accounting-Record-Number AVP * containing an Acct-Interim-Interval AVP * indicating expected intermediate charging interval * } * then { * the IUT sends an AC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating START_RECORD * containing an Acct-Interim-Interval AVP * indicating the required intermediate charging interval * when { * the IUT receives an AC-Request * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Accounting-Record-Number AVP * containing an Event-Timestamp AVP * optionally containing Service-Information AVP * indicating Subscription-Id AVP * indicating IMS-Information AVP * } * then { * the IUT sends an AC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * optionally containing an Acct-Interim-Interval AVP * indicating the desired intermediate charging interval * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CDF_TC_04 */ testcase TC_RF_CDF_TC_04() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_ctf; // Test control if (not (PICS_RF_CDF_IUT and PICS_RF_CDF_SESSION_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CDF_IUT and PICS_RF_CDF_SESSION_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_ctfUp(v_diameterRf_ctf); // Start v_diameterRf_ctf.start(f_TC_RF_CDF_TC_04()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Rf_ctfDown(v_diameterRf_ctf); } // End of testcase TC_RF_CDF_TC_04 /** * @desc Verify that the IUT can successfully process an AC-Request [Stop] where Session Based Charging is used *
* Pics Selection: PICS_CDF_IUT and PICS_SESSION_BASED_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an AC-Request * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Type AVP * indicating STOP_RECORD * containing an Accounting-Record-Number AVP * containing an Event-Timestamp AVP * optionally containing Service-Information AVP * indicating Subscription-Id AVP * indicating IMS-Information AVP * } * then { * the IUT sends an AC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating STOP_RECORD * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CDF_TC_05 */ testcase TC_RF_CDF_TC_05() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_ctf; // Test control if (not (PICS_RF_CDF_IUT and PICS_RF_CDF_SESSION_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CDF_IUT and PICS_RF_CDF_SESSION_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_ctfUp(v_diameterRf_ctf); // Start v_diameterRf_ctf.start(f_TC_RF_CDF_TC_04()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Rf_ctfDown(v_diameterRf_ctf); } // End of testcase TC_RF_CDF_TC_05 } // End of group TypeOfCharging //5.2.2.1.4 ErrorCases group TP_RF_CDF_EC { /** * @desc Verify that the IUT can successfully process Duplicate Detection AC-Request [Event] where Event Based Charging is used *
* Pics Selection: PICS_CDF_IUT and PICS_EVENT_BASED_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an AC-Request * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1' * containing an Accounting-Record-Type AVP * indicating EVENT_RECORD * containing an Event-Timestamp AVP * } * then { * the IUT sends a AC-Response * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating EVENT_RECORD * containing an Accounting-Record-Number AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CDF_EC_01 */ testcase TC_RF_CDF_EC_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_ctf; // Test control if (not (PICS_RF_CDF_IUT and PICS_RF_CDF_EVENT_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CDF_IUT and PICS_RF_CDF_EVENT_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_ctfUp(v_diameterRf_ctf); // Start v_diameterRf_ctf.start(f_TC_RF_CDF_EC_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Rf_ctfDown(v_diameterRf_ctf); } // End of testcase TC_RF_CDF_EC_01 /** * @desc Verify that the IUT can successfully process Duplicate Detection AC-Request [Interim] where Session Based Charging is used *
* Pics Selection: PICS_CDF_IUT and PICS_SESSION_BASED_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an AC-Request * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1' * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Event-Timestamp AVP * } * then { * the IUT sends a AC-Response * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating EVENT_RECORD * containing an Accounting-Record-Number AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CDF_EC_02 */ testcase TC_RF_CDF_EC_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_ctf; // Test control if (not (PICS_RF_CDF_IUT and PICS_RF_CDF_SESSION_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CDF_IUT and PICS_RF_CDF_SESSION_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_ctfUp(v_diameterRf_ctf); // Start v_diameterRf_ctf.start(f_TC_RF_CDF_EC_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Rf_ctfDown(v_diameterRf_ctf); } // End of testcase TC_RF_CDF_EC_02 } // End of group ErrorCasses } // End of group TP_RF_CDF_Role // 5.2.2.2. CTF Role group TP_RF_CTF_Role { // 5.2.2.2.2 Message Syntax group TP_RF_CTF_MS { /** * @desc Verify that the IUT can send an AC-Request to indicate a Charging Data Transfer. *
* Pics Selection: PICS_RF_CTF_IUT * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT is requested to indicate a request for Charging Data Transfer * } * then { * the IUT sends an AC-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Number AVP * containing an Acct-Application-Id AVP * indicating the value 3 * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_MS_01 */ testcase TC_RF_CTF_MS_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not PICS_RF_CTF_IUT) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_MS_01()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_MS_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_MS_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_MS_01 /** * @desc Verify that the IUT can send an AC-Request with correct Diameter-Header parameters to indicate a Charging Data Transfer with valid Diameter-Header parameters. *
* Pics Selection: PICS_RF_CTF_IUT * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT is requested to indicate a request for Charging Data Transfer * } * then { * the IUT sends an AC-Request * containing a Diameter-Header * containing a Version * indicating value '1' * containing a Command-Flags * containing T bit * indicating value '0' * containing E bit * indicating value '0' * containing r bits * indicating value '0000' * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_MS_02 */ testcase TC_RF_CTF_MS_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not PICS_RF_CTF_IUT) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_MS_02()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_MS_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_MS_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_MS_02 } // End of group TP_RF_CTF_MS_Role // 5.2.2.2.3 Type of Charging group TP_RF_CTF_TC { /** * @desc Verify that the IUT can successfully process an AC-Request [Event]. *
* Pics Selection: PICS_RF_CTF_IUT and PICS_RF_CTF_EVENT_BASED_CHARGING * Initial conditions: * with { * Preamble action: UE initiates an initial REGISTRATION procedure. * } * Expected behaviour: * ensure that { * when { * the IUT sends an AC-Request * containing an Accounting-Record-Type AVP * indicating EVENT_RECORD * containing an Accounting-Record-Number AVP * containing an Event-Timestamp AVP * containing Service-Information AVP * containing at least one Subscription-ID AVP * indicating the identification of the user * optionally containing IMS-Information AVP * containing Node-Functionality AVP * indicating the value 3 * optionally containing Service-Generic-Information AVP * indicating the service specific parameters * optionally containing Service-Context-Id AVP * } * then { * the IUT receives an AC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating EVENT_RECORD * and the IUT accepts the message * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_TC_01 */ testcase TC_RF_CTF_TC_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RF_CTF_IUT and PICS_RF_CTF_EVENT_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT and PICS_RF_CTF_EVENT_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_TC_01()); if (PX_SIPsupport) { if (PX_VA == 1){ v_imsComponent_ue.start(f_TC_CTF_TC_UE_01_VA1(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_TC_CSCF_01_VA1(p_cSeq_s)); } else if(PX_VA == 2){ v_imsComponent_ue.start(f_TC_CTF_TC_UE_01_VA2(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_TC_CSCF_01_VA2(p_cSeq_s)); } else if(PX_VA == 3){ v_imsComponent_ue.start(f_TC_CTF_TC_UE_01_VA3(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_TC_CSCF_01_VA3(p_cSeq_s)); } else if(PX_VA == 4){ v_imsComponent_ue.start(f_TC_CTF_TC_UE_01_VA4(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_TC_CSCF_01_VA4(p_cSeq_s)); } else { log("Set correct value of PIXIT: PX_VA due to related test case!"); } } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_TC_01 /** * @desc Verify that the IUT can successfully process an AC-Request [Start]. *
* Pics Selection: PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING * Initial conditions: * with { * Preamble action: UE initiates an INVITE procedure. * } * Expected behaviour: * ensure that { * when { * the IUT sends an AC-Request * containing an Accounting-Record-Type AVP * indicating START_RECORD * containing an Accounting-Record-Number AVP * containing an Event-Timestamp AVP * containing Service-Information AVP * indicating the service specific parameters * } * then { * the IUT receives an AC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating START_RECORD * optionally containing an Acct-Interim-Interval AVP * indicating the desired intermediate charging interval * and the IUT accepts the message * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_TC_02 */ testcase TC_RF_CTF_TC_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_TC_02()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_TC_UE_02(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_TC_CSCF_02(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_TC_02 /** * @desc Verify that the time between several AC-Requests [Interim] * received by the IUT is at least equal to the desired intermediate * charging interval. *
* Pics Selection: PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING * Initial conditions: * with { * Preamble action: UE establishes a call. * } * Expected behaviour: * Ensure that { * the IUT sends an AC-Request * containing an Accounting-Record-Type AVP * indicating START_RECORD * containing an Accounting-Record-Number AVP * the IUT receives an AC-Answer * containing an Accounting-Record-Type AVP * indicating START_RECORD * containing an Accounting-Record-Number AVP * containing an Acct-Interim-Interval AVP * containing the desired intermediate charging interval * indicating a value INTERIM_INTERVAL not equal to 0 * the IUT sends periodically an AC-Request [Interim] * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Accounting-Record-Number AVP * containing a Service-Information AVP * containing an Event-Timestamp AVP * the IUT receives an AC-Answer * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Accounting-Record-Number AVP * the IUT accepts the message * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_TC_03 */ testcase TC_RF_CTF_TC_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_TC_03()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_TC_UE_03(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_TC_CSCF_03(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_TC_03 /** * @desc Verify that the IUT can successfully process an AC-Request [Interim]. *
* Pics Selection: PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING * Initial conditions: * with { * Preamble action: UE establishes a call. * } * Expected behaviour: * Ensure that { * the IUT sends an AC-Request * containing an Accounting-Record-Type AVP * indicating START_RECORD * containing an Accounting-Record-Number AVP * the IUT receives an AC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating START_RECORD * containing an Accounting-Record-Number AVP * the IUT receives SIP 200 OK (reInvite) * the IUT sends an AC-Request [Interim] * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Accounting-Record-Number AVP * containing a Service-Information AVP * containing an Event-Timestamp AVP * the IUT receives an AC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Accounting-Record-Number AVP * the IUT accepts the message * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_TC_04 */ testcase TC_RF_CTF_TC_04() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_TC_04()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_TC_UE_04(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_TC_CSCF_04(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_TC_04 /** * @desc Verify that the IUT can successfully process an AC-Request [Stop]. *
* Pics Selection: PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING * Initial conditions: * with { * Preamble action: UE establishes a call. * } * Expected behaviour: * Ensure that { * when { * the IUT sends an AC-Request * containing an Accounting-Record-Type AVP * indicating STOP_RECORD * containing an Accounting-Record-Number AVP * containing an Acct-Application-Id AVP * indicating the value 3 * } * then { * the IUT receives an AC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * indicating STOP_RECORD * and the IUT accepts the message * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_TC_05 */ testcase TC_RF_CTF_TC_05() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_TC_05()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_TC_UE_05(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_TC_CSCF_05(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_TC_05 } // End of group TP_RF_CTF_TC_Role // 5.2.2.2.4 Error cases group TP_RF_CTF_EC { /** * @desc Verify that the IUT sends periodically Device-Watchdog-Request messages to the CDF. *
* Pics Selection: PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING * Initial conditions: * with { * Preamble action: ACR, ACA [Start] * } * Expected behaviour: * Ensure that { * when { * sends a DW-Request * containing a Diameter-Header * containing a Hop-by-Hop AVP * containing a End-To-End AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * } * then { * the IUT receives a DW-Answer * containing a Diameter-Header * containing a Hop-by-Hop AVP * containing a End-To-End AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing an Origin-Host AVP * containing an Origin-Realm AVP * and the IUT accepts the message * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_EC_01 */ testcase TC_RF_CTF_EC_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_EC_01()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_EC_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_EC_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_EC_01 /** * @desc Verify that on connection failure with the pimary CDF, the IUT sends an AC-Request [Interim] to the secondary CDF. *
* Pics Selection: PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_CONNECTION_TO_BACKUP_CDF * Initial conditions: * with { * Preamble action: ACR, ACA [Start] and ACR, ACA [Interim] are exchanged. * } * Expected behaviour: * Ensure that { * when { * the IUT is requested to indicate the CDF stop * } * then { * the IUT sends an AC-Request [Interim] to the secondary CDF * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Accounting-Record-Number AVP * containing Service-Information AVP * containing an Event-Timestamp AVP * indicating a time orderd sequence * and the IUT receives an AC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Number AVP * and the IUT accepts the message * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_EC_02 */ testcase TC_RF_CTF_EC_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf, v_diameterRf_cdf2; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_CONNECTION_TO_BACKUP_CDF)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_CONNECTION_TO_BACKUP_CDF' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_2Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_diameterRf_cdf2, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_EC_02(v_diameterRf_cdf)); v_diameterRf_cdf2.start(f_TC_CTF_EC_02_2ndCDF()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_EC_UE_02(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_EC_CSCF_02(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_2Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_diameterRf_cdf2, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_EC_02 /** * @desc Verify that on connection restored, the IUT sends an AC-Request [Interim] to the primary CDF. *
* Pics Selection: PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_CONNECTION_TO_BACKUP_CDF * Initial conditions: * with { * Preamble action: ACR, ACA [Start] and ACR, ACA [Interim] are exchanged. * } * Expected behaviour: * Ensure that { * when { * the IUT sends an AC-Request [Interim] to the primary CDF * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Accounting-Record-Number AVP * containing Service-Information AVP * containing an Event-Timestamp AVP * indicating a time orderd sequence * } * then { * the IUT receives an AC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Number AVP * and the IUT accepts the message * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_EC_03 */ testcase TC_RF_CTF_EC_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf, v_diameterRf_cdf2; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_CONNECTION_TO_BACKUP_CDF)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_CONNECTION_TO_BACKUP_CDF' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_2Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_diameterRf_cdf2, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_EC_03(v_diameterRf_cdf)); v_diameterRf_cdf2.start(f_TC_CTF_EC_03_2ndCDF()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_EC_UE_03(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_EC_CSCF_03(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_2Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_diameterRf_cdf2, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_EC_03 /** * @desc Verify that on communication failure, the IUT stores generated accounting * data in a non-volatile memory and, on communication restored, sends them to * the CDF, in the order they were stored in the buffer. *
* Pics Selection: PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and * PICS_RF_CTF_ERROR_CASES_ACR_BUFFERING and NOT PICS_RF_CTF_CONNECTION_TO_BACKUP_CDF * Initial conditions: * with { * Preamble action: ACR, ACA [Start] * } * Expected behaviour: * Ensure that { * when { * the IUT is requested to indicate the CDF restart * } * then { * sends the buffered AC-Request [Interim] * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Accounting-Record-Number AVP * containing a Service-Information AVP * containing an Event-Timestamp AVP * indicating a time orderd sequence * and the IUT receives one AC-Answer for each buffered AC-Request [Interim] * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Number AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_EC_04 */ testcase TC_RF_CTF_EC_04() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_ERROR_CASES_ACR_BUFFERING and not PICS_RF_CTF_CONNECTION_TO_BACKUP_CDF)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_ERROR_CASES_ACR_BUFFERING and not PICS_RF_CTF_CONNECTION_TO_BACKUP_CDF' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_EC_04(v_diameterRf_cdf)); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_EC_UE_04(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_EC_CSCF_04(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_EC_04 /** * @desc Verify that the IUT retransmits an unacknowladged AC-Request [Interim] (T-flag). *
* Pics Selection: PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and * PICS_RF_CTF_ERROR_CASES_ACR_RETRANSMISSION * Initial conditions: * with { * Preamble action: ACR, ACA [Start] and ACR, ACA [Interim] are exchanged and the * CDF stops communication with the IUT. * } * Expected behaviour: * Ensure that { * when { * the IUT is requested to indicate not having received an AC-Answer [Interim] * } * then { * send again an AC-Request [Interim] * containing a Diameter-Header * containing a Command-Flags * containing a T-flag * indicating value '1' * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Accounting-Record-Number AVP * containing a Service-Information AVP * containing an Event-Timestamp AVP * indicating a time orderd sequence * and the IUT receives an AC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Number AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_EC_05 */ testcase TC_RF_CTF_EC_05() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_ERROR_CASES_ACR_RETRANSMISSION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_ERROR_CASES_ACR_RETRANSMISSION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_EC_05()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_EC_UE_05(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_EC_CSCF_05(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_EC_05 /** * @desc Verify that on reaching the maximum of retransmissions of unacknowladged * AC-Requests [Interim] (T-flag), the IUT executes the CDF connection failure procedure. *
* Pics Selection: PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and * PICS_RF_CTF_ERROR_CASES_ACR_BUFFERING * Initial conditions: * with { * Preamble action: ACR, ACA [Start] and ACR, ACA [Interim] are exchanged and the * CDF stops communication with the IUT. * } * Expected behaviour: * Ensure that { * when { * on maximum retransmission of AC-Request [Interim] * the IUT is requested to indicate the CDF restart * } * then { * sends the buffered AC-Request [Interim] * containing an Accounting-Record-Type AVP * indicating INTERIM_RECORD * containing an Accounting-Record-Number AVP * containing a Service-Information AVP * containing an Event-Timestamp AVP * indicating a time orderd sequence * and the IUT receives one AC-Answer for each buffered AC-Request [Interim] * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Accounting-Record-Type AVP * containing an Accounting-Record-Number AVP * and the IUT accepts the messages * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RF_CTF_EC_06 */ testcase TC_RF_CTF_EC_06() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRf_cdf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_ERROR_CASES_ACR_BUFFERING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RF_CTF_IUT and PICS_RF_CTF_SESSION_BASED_CHARGING and PICS_RF_CTF_ERROR_CASES_ACR_BUFFERING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Rf_1Gm_1Mw_cdfUp(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRf_cdf.start(f_TC_CTF_EC_06(v_diameterRf_cdf)); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_CTF_EC_UE_06(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_CTF_EC_CSCF_06(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Rf_1Gm_1Mw_cdfDown(v_diameterRf_cdf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RF_CTF_EC_06 } // End of group TP_RF_CTF_EC_Role } // End of group TP_RF_CTF_Role } // End of group TP_RFRole group TP_RO_Role { //5.2.3.1. OCF Role group TP_RO_OCF_Role { // 5.2.3.1.2 Message Syntax group TP_RO_OCF_MS { /** * @desc Verify that the IUT can successfully process all mandatory AVPs in a CC-Request received due to Charging Data Transfer. *
* Pics Selection: PICS_OCF_IUT * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing an Auth-Application-Id AVP * indicating the value 4 * containing a Service-Context-Id AVP * containing a CC-Request-Type AVP * containing a CC-Request-Number AVP * } * then { * the IUT sends a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing an Auth-Application-Id AVP * containing a CC-Request-Type AVP * containing a CC-Request-Number AVP. * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_MS_01 */ testcase TC_RO_OCF_MS_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not PICS_RO_OCF_IUT) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_MS_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_MS_01 /** * @desc Verify that the IUT can successfully process all mandatory AVPs in a CC-Request received due to Charging Data Transfer and responds with a valid CC-Answer message *
* Pics Selection: PICS_OCF_IUT * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing an Auth-Application-Id AVP * indicating the value 4 * containing a Service-Context-Id AVP * containing a CC-Request-Type AVP * containing a CC-Request-Number AVP * } * then { * the IUT sends a CC-Answer * containing a Diameter-Header * containing a Version * indicating value '1' * containing a Command-Flags * containing T bit * indicating value '0' * containing r bits * indicating value '0000'. * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_MS_02 */ testcase TC_RO_OCF_MS_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not PICS_RO_OCF_IUT) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_MS_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_MS_02 } // End of group TP_RO_OCF_MS // 5.2.3.1.3 Type of Charging group TP_RO_OCF_TC { /** * @desc Verify that the IUT can successfully process a CC-Request [Event] with direct debiting due to Immediate Event Charging *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating DIRECT_DEBITING * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating debites units * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_TC_01 */ testcase TC_RO_OCF_TC_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_TC_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_TC_01 /** * @desc Verify that the IUT can successfully process a CC-Request [Event] with price enquiry due to Immediate Event Charging *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating PRICE_ENQUIRY * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Cost-Information AVP * containing a Unit-Value AVP * containing a Value-Digits AVP * containing a Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_TC_02 */ testcase TC_RO_OCF_TC_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_TC_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_TC_02 /** * @desc Verify that the IUT can successfully process a CC-Request [Event] with check balance due to Immediate Event Charging *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating CHECK BALANCE * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Remaining-Balance AVP * containing a Unit-Value AVP * containing a Value-Digits AVP * containing a Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_TC_03 */ testcase TC_RO_OCF_TC_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_TC_03()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_TC_03 /** * @desc Verify that the IUT can successfully process a CC-Request [Event] with refund account due to Immediate Event Charging *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * CCR,CCA [Event] direct debeting action are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating REFUND ACCOUNT * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating refunded units * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_TC_04 */ testcase TC_RO_OCF_TC_04() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_TC_04()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_TC_04 /** * @desc Verify that the IUT can successfully process a CC-Request [Initial] to reserve units due to Event Charging with Unit Reservation *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating reserved units * optionally containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * optionally containing a Remaining-Balance AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_TC_05 */ testcase TC_RO_OCF_TC_05() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_TC_05()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_TC_05 /** * @desc Verify that the IUT can successfully process a CC-Request [Termination] to debit units due to Event Charging with Unit Reservation *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * optionally containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * optionally containing a Remaining-Balance AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_TC_06 */ testcase TC_RO_OCF_TC_06() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_TC_06()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_TC_06 /** * @desc Verify that the IUT can successfully process a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating reserved units * optionally containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * optionally containing a Remaining-Balance AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_TC_07 */ testcase TC_RO_OCF_TC_07() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_TC_07()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_TC_07 /** * @desc Verify that the IUT can successfully process a CC-Request [Update] to reserve units and debit units due to Session Charging with Unit Reservation *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating reserved units * optionally containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * optionally containing a Remaining-Balance AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_TC_08 */ testcase TC_RO_OCF_TC_08() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_TC_08()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_TC_08 /** * @desc Verify that the IUT can successfully process a CC-Request [Termination] to debit units due to Session Charging with Unit Reservation *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * CCR,CCA [Initial] and CCR,CCA [Update] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating reserved units * optionally containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * optionally containing a Remaining-Balance AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_TC_09 */ testcase TC_RO_OCF_TC_09() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_TC_09()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_TC_09 } // End of group TP_RO_OCF_TC // 5.2.3.1.4 Error Casses group TP_RO_OCF_EC { /** * @desc Verify that the IUT can successfully process Duplicate Detection due to Immediate Event Charging with Direct Debiting *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1 * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating DIRECT_DEBITING * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating debites units * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_EC_01 */ testcase TC_RO_OCF_EC_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_EC_RO_OCF_EC_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_EC_01 /** * @desc Verify that the IUT can successfully process Duplicate Detection due to Event Charging with Unit Reservation *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1 * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating reserved units * optionally containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * optionally containing a Remaining-Balance AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_EC_02 */ testcase TC_RO_OCF_EC_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_EC_RO_OCF_EC_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_EC_02 /** * @desc Verify that the IUT can successfully process Duplicate Detection due to Event Charging with Unit Reservation *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1 * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating reserved units * optionally containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * optionally containing a Remaining-Balance AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_EC_03 */ testcase TC_RO_OCF_EC_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_EC_RO_OCF_EC_03()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_EC_03 /** * @desc Verify that the IUT can successfully process Duplicate Detection due to Session Charging with Unit Reservation *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * CCR, CCA [Initial] and CCR, CCA [Update] are exchanged and, * the OCF stops communication with the IUT * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1 * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating reserved units * optionally containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * optionally containing a Remaining-Balance AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_EC_04 */ testcase TC_RO_OCF_EC_04() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_EC_RO_OCF_EC_04()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_EC_04 } // End of group TP_RO_OCF_EC // 5.2.3.1.5 Tariff Changes group TP_RO_OCF_CH { /** * @desc Verify that the IUT supports Tariff-Change-Usage AVP and, * that the IUT can successfully process a CC-Request [Event] to perform tariff switch due to Immediate Event Charging and, * then responds with a CC-Answer with relavant Result-Code AVP and Tariff-Time-Change AVP *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating CHECK BALANCE * containing a Multiple-Services-Credit-Control AVP * containing an Used-Service-Unit AVP * containing a Tariff-Change-Usage AVP * indicating UNIT_BEFORE_TARIFF_CHANGE * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * containing a Tariff-Time-Change AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_CH_01 */ testcase TC_RO_OCF_CH_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_CH_RO_OCF_CH_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_CH_01 /** * @desc Verify that the IUT supports Tariff-Change-Usage AVP and IUT can successfully process a CC-Request [Initial] to perform tariff switch due to Event Charging with Unit Reservation and, * then responds with a CC-Answer with relavant Result-Code AVP and Tariff-Time-Change AVP *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * containing an Used-Service-Unit AVP * containing a Tariff-Change-Usage AVP * indicating UNIT_BEFORE_TARIFF_CHANGE * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * containing a Tariff-Time-Change AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_CH_02 */ testcase TC_RO_OCF_CH_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_CH_RO_OCF_CH_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_CH_02 /** * @desc Verify that the IUT supports Tariff-Change-Usage AVP and IUT can successfully process a CC-Request [Initial] to perform tariff switch due to Session Charging with Unit Reservation and, * then responds with a CC-Answer with relavant Result-Code AVP and Tariff-Time-Change AVP *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * containing an Used-Service-Unit AVP * containing a Tariff-Change-Usage AVP * indicating UNIT_BEFORE_TARIFF_CHANGE * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * containing a Tariff-Time-Change AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_CH_03 */ testcase TC_RO_OCF_CH_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_CH_RO_OCF_CH_03()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_CH_03 } // End of group TP_RO_OCF_CH // 5.2.3.1.6 Re-Authorization group TP_RO_OCF_RE { /** * @desc Verify that the IUT re-authorizes multiple active quotas during Session Charging with Unit Reservation *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * CCR,CCA [Initial] and CCR,CCA [Update] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT is indicated for a need for re-authorization * } * then { * the IUT sends an RA-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing a Destination-Host AVP * containing an Auth-Application-Id AVP * indicating the value 4 * containing a Re-Auth-Request-Type AVP * indicating AUTHORIZE_ONLY * and the IUT receives an RA-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing an Origin-Host AVP * containing an Origin-Realm AVP * and the IUT accepts the message * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_RE_01 */ testcase TC_RO_OCF_RE_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION' required for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_RE_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_RE_01 } // End of group TP_RO_OCF_RE // 5.2.3.1.7 Failure Handling group TP_RO_OCF_FH { /** * @desc Verify that the IUT can successfully transmit Credit-Control-Failure-Handling AVP (CCFH) with price enquiry *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating PRICE_ENQUIRY * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Credit-Control-Failure-Handling AVP * indicating what to do if the IUT has been temporarily prevented * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_FH_01 */ testcase TC_RO_OCF_FH_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING' required for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_FH_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_FH_01 /** * @desc Verify that the IUT can successfully transmit Direct-Debiting-Failure-Handling AVP (DDFH) with direct debiting *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING and PICS_RO_OCF_DDFH_TERMINATE_OR_BUFFER * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating DIRECT_DEBITING * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Direct-Debiting-Failure-Handling AVP * indicating TERMINATE_OR_BUFFER * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_FH_02 */ testcase TC_RO_OCF_FH_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING and PICS_RO_OCF_DDFH_TERMINATE_OR_BUFFER)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING and PICS_RO_OCF_DDFH_TERMINATE_OR_BUFFER' required for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_FH_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_FH_02 /** * @desc Verify that the IUT can successfully transmit Direct-Debiting-Failure-Handling AVP (DDFH) with direct debiting *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING and PICS_RO_OCF_DDFH_CONTINUE * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating DIRECT_DEBITING * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Direct-Debiting-Failure-Handling AVP * indicating CONTINUE * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_FH_03 */ testcase TC_RO_OCF_FH_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING and PICS_RO_OCF_DDFH_CONTINUE)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING and PICS_RO_OCF_DDFH_CONTINUE' required for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_FH_03()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_FH_03 } // End of group TP_RO_OCF_FH // 5.2.3.1.8 Failover group TP_RO_OCF_FA { /** * @desc Verify that the IUT can successfully transmit CC-Session-Failover AVP *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_FAILOVER * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Session-Failover AVP * indicating FAILOVER_SUPPORTED * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_FA_01 */ testcase TC_RO_OCF_FA_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_FAILOVER)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_FAILOVER' required for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_FA_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_FA_01 /** * @desc Verify that the IUT can successfully transmit CC-Session-Failover AVP *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_FAILOVER * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating DIRECT_DEBITING * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Session-Failover AVP * indicating FAILOVER_SUPPORTED * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_FA_02 */ testcase TC_RO_OCF_FA_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_FAILOVER)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_FAILOVER' required for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_FA_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_FA_02 } // End of group TP_RO_OCF_FA // 5.2.3.1.9 Credit Pooling group TP_RO_OCF_CP { /** * @desc Verify that the IUT can successfully process a CC-Request [Initial] to perform credit pooling due to Event Charging with Unit Reservation and then responds with a CC-Answer with related AVPs *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_CREDIT_POOLING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Indicator AVP * indicating MULTIPLE_SERVICES_SUPPORTED * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a G-S-U-.Pool-Reference AVP * containing a G-S-U-.Pool-Identifier AVP * containing a CC-Unit-Type AVP * containing a Unit-Value AVP * containing a Value-Digits AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_CP_01 */ testcase TC_RO_OCF_CP_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_CREDIT_POOLING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_CREDIT_POOLING' required for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_CP_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_CP_01 /** * @desc Verify that the IUT supports credit pooling and it can successfully process a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_CREDIT_POOLING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Indicator AVP * indicating MULTIPLE_SERVICES_SUPPORTED * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a G-S-U-.Pool-Reference AVP * containing a G-S-U-.Pool-Identifier AVP * containing a CC-Unit-Type AVP * containing a Unit-Value AVP * containing a Value-Digits AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_CP_02 */ testcase TC_RO_OCF_CP_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_CREDIT_POOLING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_CREDIT_POOLING' required for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_CP_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_CP_02 } // End of group TP_RO_OCF_CP // 5.2.3.1.10 Other Procedures group TP_RO_OCF_OP { /** * @desc Verify that the IUT can specify an idle timeout associated with a granted quota *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION_QUOTA_HOLDING_TIME * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Quota-Holding-Time AVP * indicating a non 0 value * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_01 */ testcase TC_RO_OCF_OP_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION_QUOTA_HOLDING_TIME)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION_QUOTA_HOLDING_TIME' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_01 /** * @desc Verify that the IUT can successfully process a CC-Answer [Update] including various Trigger-Type AVPs and generate a credit re-authorization *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Trigger AVP * containing a Trigger-Type AVP * indicating one of the possible values (7.2.235/236) * the IUT sends a CC-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing a Destination-HHost AVP * containing an Auth-Application-Id AVP * indicating the value 4 * containing a Re-Auth-Request-Type AVP * indicating AUTHORIZE_ONLY * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_02 */ testcase TC_RO_OCF_OP_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_02 /** * @desc Verify that the IUT can successfully reset triggers which were already set *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Trigger AVP * not containing a Trigger-Type AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_03 */ testcase TC_RO_OCF_OP_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_03()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_03 /** * @desc Verify that the IUT can successfully indicate the remaining quota threshold by sending a CC-Answer with Time-Quota-Threshold AVP and trigger quota re-authorization *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_RE_AUTHORIZATION_QUOTA_HOLDING_TIME * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Units AVP * containing a CC-Time AVP * containing a Time-Quota-Threshold AVP * and the IUT sends an RA-Request * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_04 */ testcase TC_RO_OCF_OP_04() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_RE_AUTHORIZATION_QUOTA_HOLDING_TIME)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_RE_AUTHORIZATION_QUOTA_HOLDING_TIME' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_04()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_04 /** * @desc Verify that the IUT can successfully indicate the remaining quota threshold by sending a CC-Answer with Volume-Quota-Threshold AVP and trigger quota re-authorization *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Units AVP * containing a CC-Total-Octets AVP or * containing a CC-Input-Octets AVP or * containing a CC-Output-Octets AVP * containing a Volume-Quota-Threshold AVP * and the IUT sends an RA-Request * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_05 */ testcase TC_RO_OCF_OP_05() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_05()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_05 /** * @desc Verify that the IUT can successfully indicate the remaining quota threshold by sending a CC-Answer with Unit-Quota-Threshold AVP and trigger quota re-authorization *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Units AVP * containing a CC-Service-Specific-Units AVP * containing a Unit-Quota-Threshold AVP * and the IUT sends an RA-Request * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_06 */ testcase TC_RO_OCF_OP_06() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_06()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_06 /** * @desc Verify that the IUT can process termination action *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT has consumed Granted credits * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * } * then { * the IUT sends a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Final-Unit-Indication AVP * containing a Final-Unit-Action AVP * indicating TERMINATE * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_07 */ testcase TC_RO_OCF_OP_07() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_07()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_07 /** * @desc Verify that, IUT can process redirection action *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT has consumed Granted credits * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * } * then { * the IUT sends a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Final-Unit-Indication AVP * containing a Final-Unit-Action AVP * indicating REDIRECT * containing Redirect-Server AVP * containing Redirect-Address-Type AVP * containing Redirect-Server-Address AVP * optionally containing Restriction-Filter-Rule AVP * optionally containing Filter-Id AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_08 */ testcase TC_RO_OCF_OP_08() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_08()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_08 /** * @desc Verify that, IUT can process quota consumption time *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_QUOTA_CONSUMPTION_TIME * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * } * then { * the IUT sends a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Units AVP * containing a CC-Time AVP * containing a Quota-Consumption-Time AVP * indicating a period equal to the Quota Consumption Time * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_09 */ testcase TC_RO_OCF_OP_09() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_QUOTA_CONSUMPTION_TIME)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_QUOTA_CONSUMPTION_TIME' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_09()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_09 /** * @desc Verify that the IUT can successfully terminate sessions on CCR,CCA [Update] exchange *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_SERVICE_TERMINATION and PICS_RO_OCF_SERVICE_TERMINATION_WITH_CCA * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-AUTHORIZATION-REJECTED * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_10 */ testcase TC_RO_OCF_OP_10() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_SERVICE_TERMINATION and PICS_RO_OCF_SERVICE_TERMINATION_WITH_CCA)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_SERVICE_TERMINATION and PICS_RO_OCF_SERVICE_TERMINATION_WITH_CCA' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_10()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_10 /** * @desc Verify that the IUT can successfully terminate sessions with ASR,ASA exchange *
* Pics Selection: PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_SERVICE_TERMINATION_WITH_CCA and PICS_RO_OCF_SERVICE_TERMINATION_WITH_ASR * Initial conditions: * with { * CCR,CCA [Initial] and CCR,CCA [Update] are exchanged * } * Expected behaviour: * ensure that { * when { * on service termination request * } * then { * the IUT sends an AS-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing a Destination-Host AVP * containing an Auth-Application-Id AVP * the IUT receives an AS-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * the IUT receives a CC-Request * containing a CC-Request-Type AVP * indicating TERMINATE_REQUEST * containing a CC-Request-Number AVP * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-AUTHORIZATION-REJECTED * containing a CC-Request-Type AVP * indicating TERMINATE_REQUEST * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_11 */ testcase TC_RO_OCF_OP_11() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_SERVICE_TERMINATION_WITH_CCA and PICS_RO_OCF_SERVICE_TERMINATION_WITH_ASR)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_SERVICE_TERMINATION_WITH_CCA and PICS_RO_OCF_SERVICE_TERMINATION_WITH_ASR' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_11()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_11 /** * @desc Verify that the IUT can successfully process Envelope AVP *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_ENVELOPE_REPORTING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing an Envelope-Reporting AVP * indicating REPORT_ENVELOPES_WITH_VOLUME * the IUT receives a CC-Request * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating reserved units * containing an Envelope AVP * containing an Envelope-Start-Time AVP * optionally containing an Envelope-Stop-Time AVP * containing a CC-Total-Octets AVP * containing a CC-Input-Octets AVP * containing a CC-Output-Octets AVP * optionally containing a CC-Service-Specific-Units AVP * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_12 */ testcase TC_RO_OCF_OP_12() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_ENVELOPE_REPORTING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_ENVELOPE_REPORTING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_12()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_12 /** * @desc Verify that the IUT can successfully process combinational quota *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_TIME_QUOTA_MECHANISM * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Time-Quota-Mechanism AVP * containing a Time-Quota-Type AVP * indicating value Table 3 * containing a Base-Time-Interval AVP * indicating the length of the base time interval * optionally containing a Multiple-Services-Credit-Control AVP * the IUT receives a CC-Request * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating reserved units * containing an Envelope AVP * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_13 */ testcase TC_RO_OCF_OP_13() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_TIME_QUOTA_MECHANISM)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_TIME_QUOTA_MECHANISM' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_13()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_13 /** * @desc Verify that the IUT can successfully process control of offline charging information *
* Pics Selection: PICS_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_QUOTA_CONSUMPTION_TIME and PICS_RO_OCF_ENVELOPE_REPORTING and PICS_RO_OCF_OFFLINE_CHARGING_INFORMATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * } * then { * the IUT sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Service-Information AVP * containing a PS-Information AVP * containing an Offline-Charging AVP * contaning a Quota-Consumption-Time AVP or, * contaning a Time-Quota-Mechanism AVP * optionally containing an Envelope-Reporting AVP * indicating REPORT_ENVELOPES_WITH_VOLUME * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_OCF_OP_14 */ testcase TC_RO_OCF_OP_14() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ctf; // Test control if (not (PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_QUOTA_CONSUMPTION_TIME and PICS_RO_OCF_ENVELOPE_REPORTING and PICS_RO_OCF_OFFLINE_CHARGING_INFORMATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_OCF_IUT and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_QUOTA_CONSUMPTION_TIME and PICS_RO_OCF_ENVELOPE_REPORTING and PICS_RO_OCF_OFFLINE_CHARGING_INFORMATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ctfUp(v_diameterRo_ctf); // Start v_diameterRo_ctf.start(f_TC_RO_OCF_OP_14()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ctfDown(v_diameterRo_ctf); } // End of testcase TC_RO_OCF_OP_14 } // End of group TP_RO_OCF_OP }//End of group TP_RO_OCF_Role //5.2.3.2. CTF Role group TP_RO_CTF_Role { // 5.2.3.2.2 Message Syntax group TP_RO_CTF_MS { /** * @desc Verify that the IUT can send a CC-Request to indicate a Charging Data Transfer. *
* Pics Selection: PICS_RO_CTF_IUT * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT is requested to indicate a request for Charging Data Transfer * } * then { * the IUT sends a CC-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing an Auth-Application-Id AVP * indicating the value 4 * containing a Service-Context-Id AVP * containing a CC-Request-Type AVP * containing a CC-Request-Number AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_MS_01 */ testcase TC_RO_CTF_MS_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; // Test control if (not PICS_RO_CTF_IUT) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ocfUp(v_diameterRo_ocf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_MS_01()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ocfDown(v_diameterRo_ocf) } // End of testcase TC_RO_CTF_MS_01 /** * @desc Verify that the IUT can send an CC-Request with correct Diameter-Header parameters to indicate a Charging Data Transfer * with valid Diameter-Header parameters. *
* Pics Selection: PICS_RO_CTF_IUT * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT is requested to indicate a request for Charging Data Transfer * } * then { * the IUT sends an CC-Request * containing a Diameter-Header * containing a Version * indicating value '1' * containing a Command-Flags * containing T bit * indicating value '0' * containing E bit * indicating value '0' * containing r bits * indicating value '0000' * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_MS_02 */ testcase TC_RO_CTF_MS_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; // Test control if (not PICS_RO_CTF_IUT) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_ocfUp(v_diameterRo_ocf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_MS_02()); // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_ocfDown(v_diameterRo_ocf) } // End of testcase TC_RO_CTF_MS_02 } // End of group TP_RO_CTF_MS // 5.2.3.2.3 Type of Charging group TP_RO_CTF_TC { /** * @desc Verify that the IUT sends a CC-Request [Event] * with direct debiting due to Immediate Event Charging. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT receives a SIP message * } * then { * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating DIRECT_DEBITING * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP). ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_TC_01 */ testcase TC_RO_CTF_TC_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_TC_01()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_TC_01 /** * @desc Verify that the IUT sends a CC-Request [Event] * with price enquiry due to Immediate Event Charging. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating PRICE_ENQUIRY * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_TC_02 */ testcase TC_RO_CTF_TC_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_TC_02()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_TC_02 /** * @desc Verify that the IUT sends a CC-Request [Event] * with check balance due to Immediate Event Charging. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating CHECK BALANCE. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_TC_03 */ testcase TC_RO_CTF_TC_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_TC_03()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_TC_03 /** * @desc Verify that the IUT sends a CC-Request [Event] * with refund account due to Immediate Event Charging. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating REFUND ACCOUNT * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP). ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_TC_04 */ testcase TC_RO_CTF_TC_04() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_TC_04()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_TC_04 /** * @desc Verify that the IUT sends a second CC-Request [Event] with refund * account due to Immediate Event Charging with Refund-Information AVP * if it was received in the previous CC-Answer. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Requested-Action AVP * indicating DIRECT_DEBITING * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing an Auth-Application-Id AVP * containing a CC-Request-Type AVP * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Refund-Information AVP * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Requested Action AVP * indicating REFUND ACCOUNT * containing a Multiple-Services-Credit-Control AVP * containing a Refund-Information AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_TC_05 */ testcase TC_RO_CTF_TC_05() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_TC_05()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_TC_05 /** * @desc Verify that the IUT sends a CC-Request [Initial] * to reserve units due to Event Charging with Unit Reservation. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_TC_06 */ testcase TC_RO_CTF_TC_06() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_TC_06()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_06(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_06(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_TC_06 /** * @desc Verify that the IUT sends a CC-Request [Termination] * to debit units due to Event Charging with Unit Reservation. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_TC_07 */ testcase TC_RO_CTF_TC_07() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_TC_07()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_06(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_06(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_TC_07 /** * @desc Verify that the IUT sends a CC-Request [Initial] * to reserve units due to Session Charging with Unit Reservation. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_TC_08 */ testcase TC_RO_CTF_TC_08() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_TC_08()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_TC_08 /** * @desc Verify that the IUT sends a CC-Request [Update] * to debit units due to Session Charging with Unit Reservation. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_TC_09 */ testcase TC_RO_CTF_TC_09() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_TC_09()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_TC_09 /** * @desc Verify that the IUT sends a CC-Request [Termination] * to debit units due to Session Charging with Unit Reservation. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_TC_10 */ testcase TC_RO_CTF_TC_10() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_TC_10()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_TC_10 } // End of group TP_RO_CTF_TC // 5.2.3.2.4 Error Casses group TP_RO_CTF_EC { /** * @desc Verify that the IUT retransmits an unacknowledged CC-Request (T-flag) with direct debiting. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * OCF is not available * } * Expected behaviour: * ensure that { * when { * the IUT sends an CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating DIRECT_DEBITING * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * and the IUT does not received the CC-Answer * } * then { * the IUT sends a CC-Request * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1' * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating DIRECT_DEBITING * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_EC_01 */ testcase TC_RO_CTF_EC_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_EC_01()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_EC_01 /** * @desc Verify that the IUT retransmits an unacknowledged CC-Request (T-flag) with price enquiry. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * OCF is not available * } * Expected behaviour: * ensure that { * when { * the IUT sends an CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating PRICE_ENQUIRY * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * and the IUT does not received the CC-Answer * } * then { * the IUT sends a CC-Request * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1' * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating PRICE_ENQUIRY * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_EC_02 */ testcase TC_RO_CTF_EC_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_EC_02()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_EC_02 /** * @desc Verify that the IUT retransmits an unacknowledged CC-Request (T-flag). *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * OCF is not available * } * Expected behaviour: * ensure that { * when { * the IUT sends an CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * and the IUT does not received the CC-Answer * } * then { * the IUT sends a CC-equest * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1' * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_EC_03 */ testcase TC_RO_CTF_EC_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_EC_03()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_06(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_06(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_EC_03 /** * @desc Verify that the IUT retransmits an unacknowledged CC-Request (T-flag). *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * OCF is not available * CCR,CCA [Initial] are exchanged. * } * Expected behaviour: * ensure that { * when { * the IUT sends an CC-Request * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * and the IUT does not received the CC-Answer * } * then { * the IUT sends a CC-Request * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1' * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_EC_04 */ testcase TC_RO_CTF_EC_04() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_EC_04()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_06(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_06(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_EC_04 /** * @desc Verify that the IUT retransmits an unacknowledged CC-Request (T-flag). *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * CCR, CCA [Initial] and CCR, CCA [Update] are exchanged and, * the OCF stops communication with the IUT. * } * Expected behaviour: * ensure that { * when { * the IUT sends an CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * and the IUT does not received the CC-Answer * } * then { * the IUT sends a CC-Request * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1' * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_EC_05 */ testcase TC_RO_CTF_EC_05() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_EC_05()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_EC_05 /** * @desc Verify that on communication failure, the IUT stores generated accounting data in a non-volatile memory and, on communication restored, sends them to the OCS, in the order they were stored in the buffer *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_DDFH_CONTINUE and not PICS_RO_CTF_FAILOVER * Initial conditions: * with { * the OCF stops communication with the IUT. * } * Expected behaviour: * ensure that { * when { * the OCF restart * and the IUT does not received the CC-Answer * } * then { * the IUT sends the buffered CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating REFUND ACCOUNT * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * the IUT receives a CC-Answer for each buffered CC-Request * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_EC_06 */ testcase TC_RO_CTF_EC_06() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_DDFH_CONTINUE) or PICS_RO_CTF_FAILOVER) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_DDFH_CONTINUE and not PICS_RO_CTF_FAILOVER' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_EC_06()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_EC_06 /** * @desc Verify that on communication failure, the IUT stores generated accounting data in a non-volatile memory and, on communication restored, sends them to the CDF, in the order they were stored in the buffer *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_DDFH_CONTINUE and not PICS_RO_CTF_FAILOVER * Initial conditions: * with { * the OCF stops communication with the IUT. * } * Expected behaviour: * ensure that { * when { * the OCF restart * } * then { * the IUT sends the buffered CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating DIRECT_DEBITING * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_EC_07 */ testcase TC_RO_CTF_EC_07() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_DDFH_CONTINUE) or PICS_RO_CTF_FAILOVER) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_DDFH_CONTINUE and not PICS_RO_CTF_FAILOVER' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_EC_07()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_EC_07 } // End of group TP_RO_CTF_EC // 5.2.3.2.5 Tariff Changes group TP_RO_CTF_CH { /** * @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Event Charging with Unit Reservation and indicates tariff time change. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION * Initial conditions: * with { * the tariff time change * } * then { * the IUT receives a SIP message * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * not containing a Tariff-Change-Usage AVP * containing a Requested-Service-Unit AVP * containing an Used-Service-Units AVP * containing a Tariff-Change-Usage AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_CH_01 */ testcase TC_RO_CTF_CH_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_CH_01()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_06(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_06(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_CH_01 /** * @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Event Charging with Unit Reservation and when the IUT receives a CC-Answer with Tariff-Time-Change AVP the IUT accepts it and sends a CC-Request after the SIP session is released. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION * Initial conditions: * with { * * } * then { * the IUT receives a SIP message * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * not containing a Tariff-Change-Usage AVP * containing a Requested-Service-Unit AVP * containing an Used-Service-Units AVP * containing a Tariff-Change-Usage AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * containing a Tariff-Time-Change AVP * the IUT receives a SIP message * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_CH_02 */ testcase TC_RO_CTF_CH_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_CH_02()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_06(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_06(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_CH_02 /** * @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Event Charging with Unit Reservation and when the IUT receives a CC-Answer with Tariff-Time-Change AVP the IUT rejects it and sends a CC-Request with Termination-Cause AVP. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and not PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION * Initial conditions: * with { * * } * then { * the IUT receives a SIP message * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * containing an Used-Service-Units AVP * containing a Tariff-Change-Usage AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * containing a Tariff-Time-Change AVP * the IUT receives a SIP message * the IUT sends a CC-Request * containing a Termination-Cause AVP * indicating DIAMETER_BAD_ANSWER * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_CH_03 */ testcase TC_RO_CTF_CH_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and not(PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION))) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and not PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_CH_03()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_06(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_06(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_CH_03 /** * @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation and indicates tariff time change *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION * Initial conditions: * with { * the tariff time change * } * then { * the IUT receives a SIP message * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * not containing a Tariff-Change-Usage AVP * containing a Requested-Service-Unit AVP * containing an Used-Service-Units AVP * containing a Tariff-Change-Usage AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_CH_04 */ testcase TC_RO_CTF_CH_04() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_CH_04()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_CH_04 /** * @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation and when the IUT receives a CC-Answer with Tariff-Time-Change AVP the IUT accepts it and sends a CC-Request after the SIP session is released *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION * Initial conditions: * with { * * } * then { * the IUT receives a SIP message * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * not containing a Tariff-Change-Usage AVP * containing a Requested-Service-Unit AVP * containing an Used-Service-Units AVP * containing a Tariff-Change-Usage AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * containing a Tariff-Time-Change AVP * the IUT receives a SIP message * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_CH_05 */ testcase TC_RO_CTF_CH_05() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_CH_05()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_CH_05 /** * @desc Verify that the IUT sends a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation and when the IUT receives a CC-Answer with Tariff-Time-Change AVP the IUT rejects it and sends a CC-Request with Termination-Cause AVP *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and not PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION * Initial conditions: * with { * * } * then { * the IUT receives a SIP message * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * containing an Used-Service-Units AVP * containing a Tariff-Change-Usage AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * containing a Tariff-Time-Change AVP * the IUT receives a SIP message * the IUT sends a CC-Request * containing a Termination-Cause AVP * indicating DIAMETER_BAD_ANSWER * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_CH_06 */ testcase TC_RO_CTF_CH_06() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and not(PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION))) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and not PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_CH_06()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_CH_06 } // End of group TP_RO_CTF_CH // 5.2.3.2.6 Re-Authorization group TP_RO_CTF_RE { /** * @desc Verify that the IUT sends a CC-Request [Update] to reserve and debit units due to Session Charging with Unit Reservation and when the re-authorization procedure starts the IUT sends appropriate answer after an RA-Request is received *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_RE_AUTHORIZATION * Initial conditions: * with { * CCR,CCA [Initial] are exchanged * } * then { * the IUT receives a SIP message * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing an Used-Service-Units AVP * the IUT receives a CC-Answer * the IUT receives an RA-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing a Destination-Host AVP * containing an Auth-Application-Id AVP * indicating the value 4 * containing a Re-Auth-Request-Type AVP * indicating AUTHORIZE_ONLY * the IUT sends an RA-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing an Origin-Host AVP * containing an Origin-Realm AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_RE_01 */ testcase TC_RO_CTF_RE_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_RE_AUTHORIZATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_RE_AUTHORIZATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_RE_01()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_RE_01 } // End of group TP_RO_CTF_RE // 5.2.3.2.7 Failure Handling group TP_RO_CTF_FH { /** * @desc Verify that the IUT can successfully override local CCFH values due to Event Charging with Unit Reservation. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_CCFH_CONTINUE * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT sends a CC-Request to the primary OCF * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating reserved units * containing Credit-Control-Failure-Handling AVP * indicating CONTINUE * the primary OCF stops responding * } * then { * the IUT sends a CC-Request to the primary OCF * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT does not receive a CC-Answer * the IUT sends a CC-Request to the secondary OCF * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Service-Information AVP * containing an IMS-Information AVP * containing an Alternate-Charged-Party-Address AVP * indicating a different OCF server * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_FH_01 */ testcase TC_RO_CTF_FH_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf, v_diameterRo_ocf2; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_CCFH_CONTINUE)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_CCFH_CONTINUE' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_2Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_FH_01()); v_diameterRo_ocf2.start(f_TC_RO_CTF_FH_01_2ndOCF()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_FH_UE_01(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_FH_CSCF_01(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_2Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_FH_01 /** * @desc Verify that the IUT can successfully override local DDFH value with Direct Debiting. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and (PICS_RO_CTF_DDFH_TERMINATE_OR_BUFFER or PICS_RO_CTF_DDFH_CONTINUE) * Initial conditions: * with { * * } * Expected behaviour: * ensure that { * when { * the IUT sends a CC-Request to the primary OCF * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating DIRECT_DEBITING * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP) * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Unit AVP * indicating reserved units * containing Direct-Debiting-Failure-Handling AVP * indicating TERMINATE_OR_BUFFER * the primary OCF stops responding * } * then { * the IUT sends a CC-Request to the primary OCF * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT does not receive a CC-Answer * the IUT sends a CC-Request to the secondary OCF * containing Diameter-Header * containing Command-Flags * containing T-flag * indicating value '1' * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_FH_02 */ testcase TC_RO_CTF_FH_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf, v_diameterRo_ocf2; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and (PICS_RO_CTF_DDFH_TERMINATE_OR_BUFFER or PICS_RO_CTF_DDFH_CONTINUE))) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and (PICS_RO_CTF_DDFH_TERMINATE_OR_BUFFER or PICS_RO_CTF_DDFH_CONTINUE)' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_2Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_FH_02()); v_diameterRo_ocf2.start(f_TC_RO_CTF_FH_02_2ndOCF()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_FH_UE_02(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_FH_CSCF_02(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_2Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_FH_02 } // End of group TP_RO_CTF_FH // 5.2.3.2.8 Failover group TP_RO_CTF_FA { /** * @desc Verify that on connection failure with the pimary OCF, the IUT sends a CC-Request [Event] to the secondary OCF. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_FAILOVER * Initial conditions: * with { * A secondary OCF is available * } * Expected behaviour: * ensure that { * when { * the IUT sends an CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating PRICE_ENQUIRY * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP * and the IUT does not received the CC-Answer * } * then { * the sends the CC-Request to the secondary OCF * containing an CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating PRICE_ENQUIRY * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_FA_01 */ testcase TC_RO_CTF_FA_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf, v_diameterRo_ocf2; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_FAILOVER)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_FAILOVER' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_2Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_FA_01()); v_diameterRo_ocf2.start(f_TC_RO_CTF_FA_01_2ndOCF()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_FH_UE_02(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_FH_CSCF_02(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_2Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_FA_01 /** * @desc Verify that on connection restored, the IUT sends a CC-Request [Event] to the primary OCF *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_FAILOVER * Initial conditions: * with { * A secondary OCF is available * } * Expected behaviour: * ensure that { * when { * the IUT sends an CC-Request to the primary OCF * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating PRICE_ENQUIRY * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP * the IUT does not received the CC-Answer * the sends the CC-Request to the secondary OCF * containing an CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating PRICE_ENQUIRY * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * the IUT receives a WC-Request from the primary OCF * } * then { * the sends the CC-Request to the primary OCF * containing an CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating PRICE_ENQUIRY * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_FA_02 */ testcase TC_RO_CTF_FA_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf, v_diameterRo_ocf2; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_FAILOVER)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_FAILOVER' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_2Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_FA_02()); v_diameterRo_ocf2.start(f_TC_RO_CTF_FA_02_2ndOCF()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_FA_UE_02(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_FA_CSCF_02(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_2Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_FA_02 /** * @desc Verify that on connection failure with the pimary OCF, the IUT sends a CC-Request [Initial] to the secondary OCF. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_FAILOVER * Initial conditions: * with { * The primary OCF is unavailable * A secondary OCF is available * } * Expected behaviour: * ensure that { * when { * * } * then { * the sends the CC-Request to the secondary OCF * containing an CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating CHECK BALANCE * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_FA_03 */ testcase TC_RO_CTF_FA_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf, v_diameterRo_ocf2; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_FAILOVER)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_FAILOVER' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_2Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_FA_03()); v_diameterRo_ocf2.start(f_TC_RO_CTF_FA_03_2ndOCF()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_06(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_06(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_2Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_FA_03 /** * @desc Verify that, on connection restored, the IUT sends a CC-Request [Initial] to the primary OCF. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_FAILOVER * Initial conditions: * with { * A secondary OCF is available * } * Expected behaviour: * ensure that { * when { * the IUT sends an CC-Request to the primary OCF * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating CHECK_BALANCE * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP * the IUT does not received the CC-Answer * the sends the CC-Request to the secondary OCF * containing an CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating CHECK_BALANCE * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * the IUT receives a WC-Request from the primary OCF * } * then { * the sends the CC-Request to the primary OCF * containing an CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating CHECK_BALANCE * containing a Multiple-Services-Credit-Control AVP * containing a Service-Identifier AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Cost-Information AVP * containing Unit-Value AVP * containing Value-Digits AVP * containing Currency-Code AVP * } * } ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_FA_04 */ testcase TC_RO_CTF_FA_04() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf, v_diameterRo_ocf2; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_FAILOVER)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_FAILOVER' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_2Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_FA_04()); v_diameterRo_ocf2.start(f_TC_RO_CTF_FA_04_2ndOCF()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_FA_UE_02(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_FA_CSCF_02(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_2Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_diameterRo_ocf2, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_FA_04 } // End of group TP_RO_CTF_FA // 5.2.3.2.9 Credit Pooling group TP_RO_CTF_CP { /** * @desc Verify that the IUT sends a CC-Request [Event] with direct debiting due to Immediate Event Charging. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating EVENT_REQUEST * containing a CC-Request-Number AVP * containing a Requested-Action AVP * indicating DIRECT_DEBITING * containing a Multiple-Services-Credit-Control AVP * (containing a Requested-Service-Unit AVP and/or * containing a Service-Identifier AVP). ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_CP_01 */ testcase TC_RO_CTF_CP_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_CP_RO_CTF_CP_01()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_06(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_06(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_CP_01 /** * @desc Verify that the IUT supports independent credit-control of multiple services within a (sub-) session and sends a CC-Request [Initial] to reserve units due to Session Charging with Unit Reservation. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_SUB_SESSION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Indicator AVP * indicating MULTIPLE_SERVICES_SUPPORTED * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_CP_02 */ testcase TC_RO_CTF_CP_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' and 'PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_CP_02()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_CP_02 } // End of group TP_RO_CTF_CP // 5.2.3.2.10 Other Procedures group TP_RO_CTF_OP { /** * @desc Verify that, IUT can return the quotas when the traffic ceases. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Volume-Quota-Threshold AVP * containing a Granted-Service-Units AVP * containing a CC-Total-Octets AVP or, * containing a CC-Input-Octets AVP or, * containing a CC-Output-Octets AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * accepts the message. * * Preamble action: The IUT receives a CCA [Initial] including Quota-Holding-Time AVP indicating a non 0 value and the IUT exchanges some CCR, CCA [Update]. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_01 */ testcase TC_RO_CTF_OP_01() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_01()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_01 /** * @desc Verify that the IUT does not return the quotas when the traffic ceases. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * not containing a Volume-Quota-Threshold AVP * not containing a Granted-Service-Units AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * accepts the message. * * Preamble action: The IUT receives a CCA [Initial] including Quota-Holding-Time AVP indicating a 0 value and the IUT exchanges some CCR, CCA [Update]. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_02 */ testcase TC_RO_CTF_OP_02() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_02()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_02 /** * @desc Verify that, IUT can return the quotas when the traffic ceases - Based on IUT local value. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Volume-Quota-Threshold AVP * containing a Granted-Service-Units AVP * containing a CC-Total-Octets AVP or, * containing a CC-Input-Octets AVP or, * containing a CC-Output-Octets AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * accepts the message. * * Preamble action: The IUT receives a CCA [Initial] not including Quota-Holding-Time AVP and the IUT exchanges some CCR, CCA [Update]. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_03 */ testcase TC_RO_CTF_OP_03() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_03()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_03 /** * @desc Verify that the IUT supports a credit re-authorization and returns an appropriate RA-Answer. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * sends a CC-Answer * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Trigger AVP * containing a Trigger-Type AVP * the IUT receives an RA-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing a Destination-Host AVP * containing an Auth-Application-Id AVP * indicating the value 4 * containing a Re-Auth-Request-Type AVP * indicating AUTHORIZE_ONLY * the IUT sends an RA-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing an Origin-Host AVP * containing an Origin-Realm AVP * * Preamble action: CCR, CCA [Initial] and CCR, CCA [Update] are exchanged. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_04 */ testcase TC_RO_CTF_OP_04() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_04()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_04 /** * @desc Verify that the IUT can return the reporting quota usage in a Multiple-Services-Credit-Control AVP (Table 4). *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Reporting-Reason AVP (Table 4) * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * accepts the message. * * Preamble action: CCR, CCA [Initial] and CCR, CCA [Update] are exchanged. * * Table4: * TP variants Reporting-Reason AVP values: * VA_01 QHT (1) * VA_02 FINAL (2) * VA_03 VALIDITY_TIME (4) * VA_04 FORCED_REAUTHORISATION (7) ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_05 */ testcase TC_RO_CTF_OP_05() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_05()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_05 /** * @desc Verify that the IUT can return the reporting quota usage in * a Multiple-Services-Credit-Control AVP - RATING_CONDITION_CHANGE (6). *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Reporting-Reason AVP * indicating RATING_CONDITION_CHANGE * containing a Trigger AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * accepts the message. * * Preamble action: CCR, CCA [Initial] and CCR, CCA [Update] are exchanged. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_06 */ testcase TC_RO_CTF_OP_06() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_06()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_06 /** * @desc Verify that the IUT can return the reporting quota usage in a Used-Service-Unit AVP (Table 5). *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * containing a Reporting-Reason AVP (Table 5) * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * accepts the message. * * Preamble action: CCR, CCA [Initial] and CCR, CCA [Update] are exchanged. * * Table 5: * TP variants Reporting-Reason AVP values: * VA_01 THRESHOLD (0) * VA_02 QUOTA_EXHAUSTED (3) * VA_03 OTHER_QUOTA_TYPE (5) * VA_04 POOL_EXHAUSTED (8) ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_07 */ testcase TC_RO_CTF_OP_07() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_07()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_07 /** * @desc Verify that the IUT can process termination action. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * on receipt a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Final-Unit-Indication AVP * containing a Final-Unit-Action AVP * indicating TERMINATE * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * and the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * accepts the message. * * Preamble action: CCR, CCA [Initial] are exchanged. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_08 */ testcase TC_RO_CTF_OP_08() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_08()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_08 /** * @desc Verify that the IUT can process termination action after redirection. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Final-Unit-Indication AVP * containing a Final-Unit-Action AVP * indicating REDIRECT * containing Redirect-Server AVP * containing Redirect-Address-Type AVP * containing Redirect-Server-Address AVP * optionally containing Restriction-Filter-Rule AVP * optionally containing Filter-Id AVP AVP * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * indicatng User B * and the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * indicatng User B * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * indicatng User C * and the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * indicatng User C * accepts the message. * * Preamble action: CCR, CCA [Initial] are exchanged ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_09 */ testcase TC_RO_CTF_OP_09() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_09()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_09 /** * @desc Verify that the IUT can process quota consumption time. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Granted-Service-Units AVP * containing a CC-Time AVP * containing a Quota-Consumption-Time AVP * indicating a period equal to the Quota Consumption Time * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_10 */ testcase TC_RO_CTF_OP_10() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_10()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_10 /** * @desc Verify that the IUT can successfully terminate sessions on a CCR, CCA [Update] exchange. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-AUTHORIZATION-REJECTED * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * and the IUT receives a CC-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * accepts the message. * * Preamble action: CCR,CCA [Initial] are exchanged. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_11 */ testcase TC_RO_CTF_OP_11() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_11()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_11 /** * @desc Verify that the IUT can successfully terminate session on an ASR, ASA exchange. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * the IUT receives an AS-Request * containing a Session-ID AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * containing a Destination-Realm AVP * containing a Destination-Host AVP * containing an Auth-Application-Id AVP * the IUT sends an AS-Answer * containing a Session-ID AVP * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * not containing an Experimental-Result AVP * containing an Origin-Host AVP * containing an Origin-Realm AVP * and sends a CC-Request * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * containing a CC-Request-Number AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-AUTHORIZATION-REJECTED * containing a CC-Request-Type AVP * indicating TERMINATION_REQUEST * accepts the message. * * Preamble action: CCR,CCA [Initial] and CCR,CCA [Update] are exchanged. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_12 */ testcase TC_RO_CTF_OP_12() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_12()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_12 /** * @desc Verify that the IUT can successfully process Envelope-Reporting AVP [DO_NOT_REPORT_ENVELOPES]. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing an Envelope-Reporting AVP * indicating DO_NOT_REPORT_ENVELOPES * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * not containing an Envelope AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_13 */ testcase TC_RO_CTF_OP_13() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_13()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_13 /** * @desc Verify that the IUT can successfully process Envelope-Reporting AVP [REPORT_ENVELOPES]. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing an Envelope-Reporting AVP * indicating REPORT_ENVELOPES * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * containing an Envelope AVP * containing an Envelope-Start-Time AVP * optionally containing an Envelope-Stop-Time AVP * optionally containing a CC-Total-Octets AVP * optionally containing a CC-Input-Octets AVP * optionally containing a CC-Output-Octets AVP * optionally containing a CC-Service-Specific-Units AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_14 */ testcase TC_RO_CTF_OP_14() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_14()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_14 /** * @desc Verify that the IUT can successfully process * Envelope-Reporting AVP [REPORT_ENVELOPES_WITH_VOLUME]. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing an Envelope-Reporting AVP * indicating REPORT_ENVELOPES_WITH_VOLUME * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * containing an Envelope AVP * containing an Envelope-Start-Time AVP * optionally containing an Envelope-Stop-Time AVP * containing a CC-Total-Octets AVP * containing a CC-Input-Octets AVP * containing a CC-Output-Octets AVP * not containing a CC-Service-Specific-Units AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_15 */ testcase TC_RO_CTF_OP_15() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_15()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_15 /** * @desc Verify that the IUT can successfully process * Envelope-Reporting AVP [REPORT_ENVELOPES_WITH_EVENT]. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing an Envelope-Reporting AVP * indicating REPORT_ENVELOPES_WITH_EVENT * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * containing an Envelope AVP * containing an Envelope-Start-Time AVP * optionally containing an Envelope-Stop-Time AVP * not containing a CC-Total-Octets AVP * not containing a CC-Input-Octets AVP * not containing a CC-Output-Octets AVP * containing a CC-Service-Specific-Units AVP ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_16 */ testcase TC_RO_CTF_OP_16() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_16()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_16 /** * @desc Verify that the IUT can successfully process * Envelope-Reporting AVP [REPORT_ENVELOPES_WITH_VOLUME_AND_EVENT]. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing an Envelope-Reporting AVP * indicating REPORT_ENVELOPES_WITH_VOLUME_AND_EVENT * the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * containing an Envelope AVP * containing an Envelope-Start-Time AVP * optionally containing an Envelope-Stop-Time AVP * containing a CC-Total-Octets AVP * containing a CC-Input-Octets AVP * containing a CC-Output-Octets AVP * containing a CC-Service-Specific-Units AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_17 */ testcase TC_RO_CTF_OP_17() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_17()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_17 /** * @desc Verify that the IUT can successfully process combinational quota without Quota-Consumption-Time mechanism.. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Time-Quota-Mechanism AVP * containing a Time-Quota-Type AVP * indicating Table 6 * containing a Base-Time-Interval AVP * indicating the length of the base time interval * the IUT sends a CC-Request * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * indicating reserved units * containing an Envelope AVP * containing an Envelope-Start-Time AVP. * * TP variants Reporting-Reason AVP values: * VA_01 DISCRETE_TIME_PERIOD (0) * VA_02 CONTINUOUS_TIME_PERIOD (1) ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_18 */ testcase TC_RO_CTF_OP_18() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_18()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_18 /** * @desc Verify that the IUT can successfully process combinational quota with Quota-Consumption-Time mechanism. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Time-Quota-Mechanism AVP * containing a Time-Quota-Type AVP * indicating Table 6 * containing a Base-Time-Interval AVP * containing a Quota-Consumption-Time AVP * containing a Granted-Service-Units AVP * containing a CC-Time AVP * the IUT sends a CC-Request * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * containing an Envelope AVP * containing an Envelope-Start-Time AVP * containing an Envelope-Stop-Time AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_19 */ testcase TC_RO_CTF_OP_19() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_19()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_19 /** * @desc Verify that the IUT can successfully process combinational quota with Quota-Consumption-Time mechanism and Envelope-Reporting AVP [REPORT_ENVELOPES_WITH_VOLUME]. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Time-Quota-Mechanism AVP * containing a Time-Quota-Type AVP * indicating Table 6 * containing a Base-Time-Interval AVP * containing a Granted-Service-Units AVP * containing a Quota-Consumption-Time AVP * containing a CC-Time AVP * containing an Envelope-Reporting AVP * indicating REPORT_ENVELOPES_WITH_VOLUME * the IUT sends a CC-Request * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AV * containing an Envelope AVP * containing an Envelope-Start-Time AVP * containing an Envelope-Stop-Time AVP * containing a CC-Total-Octets AVP * containing a CC-Input-Octets AVP * containing a CC-Output-Octets AVP ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_20 */ testcase TC_RO_CTF_OP_20() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_20()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_20 /** * @desc Verify that the IUT can successfully process combinational quota with Quota-Consumption-Time mechanism and Envelope-Reporting AVP [REPORT_ENVELOPES_WITH_EVENT]. *
* Pics Selection: PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION * Initial conditions: * with { * * } * Expected behaviour: * ensure that the IUT sends a CC-Request * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a CC-Request-Number AVP * containing a Multiple-Services-Credit-Control AVP * containing a Requested-Service-Unit AVP * the IUT receives a CC-Answer * containing a Result-Code AVP * indicating DIAMETER-SUCCESS * containing a CC-Request-Type AVP * indicating INITIAL_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Time-Quota-Mechanism AVP * containing a Time-Quota-Type AVP * indicating Table 6 * containing a Base-Time-Interval AVP * containing a Quota-Consumption-Time AVP * containing a Granted-Service-Units AVP * containing a CC-Time AVP * containing an Envelope-Reporting AVP * indicating REPORT_ENVELOPES_WITH_EVENT * the IUT sends a CC-Request * containing a Result-Code AVP * indicating DIAMETER_SUCCESS * containing a CC-Request-Type AVP * indicating UPDATE_REQUEST * containing a Multiple-Services-Credit-Control AVP * containing a Used-Service-Unit AVP * containing an Envelope AVP * containing an Envelope-Start-Time AVP * containing an Envelope-Stop-Time AVP * not containing a CC-Total-Octets AVP * not containing a CC-Input-Octets AVP * not containing a CC-Output-Octets AVP * containing a CC-Service-Specific-Units AVP. ** * @version 0.0.8 * @see ETSI TS 103 374-2 V2.0.1 (2016-06) TP_RO_CTF_OP_21 */ testcase TC_RO_CTF_OP_21() runs on DiameterRfRo system TestAdapter { // Local variables var DiameterRfRo v_diameterRo_ocf; var ImsComponent v_imsComponent_ue; var ImsComponent v_imsComponent_cscf; var CSeq p_cSeq_s := {fieldName := CSEQ_E, seqNumber := 1000, method := "REGISTER"}; // Test control if (not (PICS_RO_CTF_IUT and PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION)) { log("*** " & __SCOPE__ & ": ERROR: 'PICS_RO_CTF_IUT' shall be set to true for executing the TC. ***"); stop; } // Test component configuration f_cf_1Ro_1Gm_1Mw_ocfUp(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf); // Start v_diameterRo_ocf.start(f_TC_RO_CTF_OP_21()); if (PX_SIPsupport) { v_imsComponent_ue.start(f_TC_RO_CTF_TC_UE_08(p_cSeq_s)); v_imsComponent_cscf.start(f_TC_RO_CTF_TC_CSCF_08(p_cSeq_s)); } // synchronize PTC on 1 sychronization points f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone}); f_cf_1Ro_1Gm_1Mw_ocfDown(v_diameterRo_ocf, v_imsComponent_ue, v_imsComponent_cscf) } // End of testcase TC_RO_CTF_OP_21 } // End of group TP_RO_CTF_OP }//End of group TP_RO_CTF_Role } // End of group TP_RO_Role } // End of module DiameterRfRo_TestCases DiameterRfRo_TestConfiguration.ttcn 0000664 0000000 0000000 00000071042 13523273236 0032731 0 ustar 00root root 0000000 0000000 DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn /** * @author STF 490 * @version $Id$ * @desc This module provides test component configurations * for DIAMETER tests. */ module DiameterRfRo_TestConfiguration { //LibCommon import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_BasicTypesAndValues all; //LibDiameter import from LibDiameter_Interface all; import from LibDiameter_PIXITS all; //LibSip import from LibSip_Interface all; //LibIms import from LibIms_SIPTypesAndValues all; import from LibIms_Interface all; //AtsIms import from DiameterRfRo_TestSystem all; import from DiameterRfRo_PIXITS {modulepar PX_SIPsupport;}; /* * @desc f_NrofComps returns the number of test components * based on the PIXIT value PX_Rxsupportt */ function f_NrofComps() runs on DiameterRfRo return UInt { if (PX_SIPsupport) { return vc_noOfCompWithSip } // number of components with SIP is dinamically set else { return vc_noOfCompWoSip } // number of components without SIP is dinamically set }; // End of function f_NrofComps group cfUp { /** * * @desc Creates test configuration of cf_1Rf_ctf - CDF is SUT * @param p_diameterComponent_ctf ctf component */ function f_cf_1Rf_ctfUp( out DiameterRfRo p_diameterComponent_ctf ) runs on DiameterRfRo { //Variables var FncRetCode v_ret := e_success; //Number of components with or without SIP componnets vc_noOfCompWithSip := 1; vc_noOfCompWoSip := 1; //Number of components with or without SIP componnets preset within TestSystem //Create p_diameterComponent_ctf := DiameterRfRo.create ; // Connect mtc sync port connect(self:syncPort, self:syncPort); // Connect client sync port connect(p_diameterComponent_ctf:syncPort, self:syncPort) ; //Map map(p_diameterComponent_ctf:DIAMP, system:CTF_Rf);// Diameter Init test Configuration activate(a_mtc_shutdown()); f_setVerdict(v_ret); } // End of f_cf_1Rf_ctfUp /** * * @desc Creates test configuration of CF_1Rf_ - CTF is SUT * @param p_diameterComponent_cdf cdf component */ function f_cf_1Rf_cdfUp(out DiameterRfRo p_diameterComponent_cdf) runs on DiameterRfRo { //Variables var FncRetCode v_ret := e_success; //Number of components with or without SIP componnets preset within TestSystem //Create p_diameterComponent_cdf := DiameterRfRo.create ; // Connect mtc sync port connect(self:syncPort, self:syncPort); // Connect client sync port connect(p_diameterComponent_cdf:syncPort, self:syncPort) ; //Map map(p_diameterComponent_cdf:DIAMP, system:CDF_Rf);// Diameter Init test Configuration activate(a_mtc_shutdown()); f_setVerdict(v_ret); } // End of f_cf_1Rf_cdfUp /** * * @desc Creates test configuration of CF_1Rf_1Gm_1Mw - CTF is SUT * @param p_diameterComponent_cdf cdf component * @param p_imsComponent_ue ue component * @param p_imsComponent_cscf cscf component */ function f_cf_1Rf_1Gm_1Mw_cdfUp(out DiameterRfRo p_diameterComponent_cdf, out ImsComponent p_imsComponent_ue, out ImsComponent p_imsComponent_cscf) runs on DiameterRfRo { //Variables var FncRetCode v_ret := e_success; //Number of components with or without SIP componnets vc_noOfCompWithSip := 3; vc_noOfCompWoSip := 1; //Create p_diameterComponent_cdf := DiameterRfRo.create ; if (PX_SIPsupport) { p_imsComponent_ue := ImsComponent.create ; p_imsComponent_cscf := ImsComponent.create ; } // Connect mtc sync port connect(self:syncPort, self:syncPort); // Connect client sync port connect(p_diameterComponent_cdf:syncPort, self:syncPort) ; if (PX_SIPsupport) { connect(p_imsComponent_ue:syncPort, self:syncPort) ; connect(p_imsComponent_cscf:syncPort, self:syncPort) ; } //Map map(p_diameterComponent_cdf:DIAMP, system:CDF_Rf);// Diameter Init test Configuration if (PX_SIPsupport) { map(p_imsComponent_ue:SIPP, system:UE_Gm); map(p_imsComponent_cscf:SIPP, system:CSCF_Mw); } activate(a_mtc_shutdown()); f_setVerdict(v_ret); } // End of f_cf_1Rf_1Gm_1Mw_cdfUp /** * * @desc Creates test configuration of CF_2Rf_1Gm_1Mw - CTF is SUT * @param p_diameterComponent_cdf cdf component * @param p_diameterComponent_cdf cdf2 component * @param p_imsComponent_ue ue component * @param p_imsComponent_cscf cscf component */ function f_cf_2Rf_1Gm_1Mw_cdfUp(out DiameterRfRo p_diameterComponent_cdf, out DiameterRfRo p_diameterComponent_cdf2, out ImsComponent p_imsComponent_ue, out ImsComponent p_imsComponent_cscf) runs on DiameterRfRo { //Variables var FncRetCode v_ret := e_success; //Number of components with or without SIP componnets vc_noOfCompWithSip := 4; vc_noOfCompWoSip := 2; //Create p_diameterComponent_cdf := DiameterRfRo.create ; p_diameterComponent_cdf2 := DiameterRfRo.create ; if (PX_SIPsupport) { p_imsComponent_ue := ImsComponent.create ; p_imsComponent_cscf := ImsComponent.create ; } // Connect mtc sync port connect(self:syncPort, self:syncPort); // Connect client sync port connect(p_diameterComponent_cdf:syncPort, self:syncPort) ; connect(p_diameterComponent_cdf2:syncPort, self:syncPort) ; if (PX_SIPsupport) { connect(p_imsComponent_ue:syncPort, self:syncPort) ; connect(p_imsComponent_cscf:syncPort, self:syncPort) ; } //Map map(p_diameterComponent_cdf:DIAMP, system:CDF_Rf);// Diameter Init test Configuration map(p_diameterComponent_cdf2:DIAMP, system:CDF_Rf2);// Diameter Init test Configuration if (PX_SIPsupport) { map(p_imsComponent_ue:SIPP, system:UE_Gm); map(p_imsComponent_cscf:SIPP, system:CSCF_Mw); } activate(a_mtc_shutdown()); f_setVerdict(v_ret); } // End of f_cf_2Rf_1Gm_1Mw_cdfUp /** * * @desc Creates test configuration of cf_1Ro_ctf - OCF is SUT * @param p_diameterComponent_ctf ctf component */ function f_cf_1Ro_ctfUp(out DiameterRfRo p_diameterComponent_ctf) runs on DiameterRfRo { //Variables var FncRetCode v_ret := e_success; //Number of components with or without SIP componnets preset within TestSystem //Create p_diameterComponent_ctf := DiameterRfRo.create ; // Connect mtc sync port connect(self:syncPort, self:syncPort); // Connect client sync port connect(p_diameterComponent_ctf:syncPort, self:syncPort) ; //Map map(p_diameterComponent_ctf:DIAMP, system:CTF_Ro);// Diameter Init test Configuration activate(a_mtc_shutdown()); f_setVerdict(v_ret); } // End of f_cf_1Ro_ctfUp /** * * @desc Creates test configuration of CF_1Ro_ - CTF is SUT * @param p_diameterComponent_ocf ocf component */ function f_cf_1Ro_ocfUp(out DiameterRfRo p_diameterComponent_ocf) runs on DiameterRfRo { //Variables var FncRetCode v_ret := e_success; //Number of components with or without SIP componnets preset within TestSystem //Create p_diameterComponent_ocf := DiameterRfRo.create ; // Connect mtc sync port connect(self:syncPort, self:syncPort); // Connect client sync port connect(p_diameterComponent_ocf:syncPort, self:syncPort) ; //Map map(p_diameterComponent_ocf:DIAMP, system:OCF_Ro);// Diameter Init test Configuration activate(a_mtc_shutdown()); f_setVerdict(v_ret); } // End of f_cf_1Ro_ocfUp /** * * @desc Creates test configuration of CF_1Ro_1Gm_1Mw - CTF is SUT * @param p_diameterComponent_ocf ocf component * @param p_imsComponent_ue ue component * @param p_imsComponent_cscf cscf component */ function f_cf_1Ro_1Gm_1Mw_ocfUp(out DiameterRfRo p_diameterComponent_ocf, out ImsComponent p_imsComponent_ue, out ImsComponent p_imsComponent_cscf) runs on DiameterRfRo { //Variables var FncRetCode v_ret := e_success; //Number of components with or without SIP componnets vc_noOfCompWithSip := 3; vc_noOfCompWoSip := 1; //Create p_diameterComponent_ocf := DiameterRfRo.create ; if (PX_SIPsupport) { p_imsComponent_ue := ImsComponent.create ; p_imsComponent_cscf := ImsComponent.create ; } // Connect mtc sync port connect(self:syncPort, self:syncPort); // Connect client sync port connect(p_diameterComponent_ocf:syncPort, self:syncPort) ; if (PX_SIPsupport) { connect(p_imsComponent_ue:syncPort, self:syncPort) ; connect(p_imsComponent_cscf:syncPort, self:syncPort) ; } //Map map(p_diameterComponent_ocf:DIAMP, system:OCF_Ro);// Diameter Init test Configuration if (PX_SIPsupport) { map(p_imsComponent_ue:SIPP, system:UE_Gm); map(p_imsComponent_cscf:SIPP, system:CSCF_Mw); } activate(a_mtc_shutdown()); f_setVerdict(v_ret); } // End of f_cf_1Ro_1Gm_1Mw_ocfUp /** * * @desc Creates test configuration of CF_2Ro_2Gm_1Isc - OCF is SUT * @param p_diameterComponent_ocf ocf component * @param p_diameterComponent_ocf ocf2 component * @param p_imsComponent_ue ue component * @param p_imsComponent_ue ue2 component * @param p_imsComponent_as as component */ function f_cf_2Ro_1Gm_1Mw_ocfUp(out DiameterRfRo p_diameterComponent_ocf, out DiameterRfRo p_diameterComponent_ocf2, out ImsComponent p_imsComponent_ue, out ImsComponent p_imsComponent_cscf) runs on DiameterRfRo { //Variables var FncRetCode v_ret := e_success; //Number of components with or without SIP componnets vc_noOfCompWithSip := 4; vc_noOfCompWoSip := 2; //Create p_diameterComponent_ocf := DiameterRfRo.create ; p_diameterComponent_ocf2 := DiameterRfRo.create ; if (PX_SIPsupport) { p_imsComponent_ue := ImsComponent.create ; p_imsComponent_cscf := ImsComponent.create ; } // Connect mtc sync port connect(self:syncPort, self:syncPort); // Connect client sync port connect(p_diameterComponent_ocf:syncPort, self:syncPort) ; connect(p_diameterComponent_ocf2:syncPort, self:syncPort) ; if (PX_SIPsupport) { connect(p_imsComponent_ue:syncPort, self:syncPort) ; connect(p_imsComponent_cscf:syncPort, self:syncPort) ; } //Map map(p_diameterComponent_ocf:DIAMP, system:OCF_Ro);// Diameter Init test Configuration map(p_diameterComponent_ocf2:DIAMP, system:OCF_Ro2);// Diameter Init test Configuration if (PX_SIPsupport) { map(p_imsComponent_ue:SIPP, system:UE_Gm); map(p_imsComponent_cscf:SIPP, system:CSCF_Mw); } activate(a_mtc_shutdown()); f_setVerdict(v_ret); } // End of f_cf_2Ro_1Gm_1Mw_ocfUp /** * * @desc Creates test configuration of CF_1Ro_1Gm_1Isc - CTF is SUT * @param p_diameterComponent_ocf ocf component * @param p_imsComponent_ue ue component * @param p_imsComponent_as as component */ function f_cf_1Ro_1Gm_1Isc_ocfUp(out DiameterRfRo p_diameterComponent_ocf, out ImsComponent p_imsComponent_ue, out ImsComponent p_imsComponent_as) runs on DiameterRfRo { //Variables var FncRetCode v_ret := e_success; //Number of components with or without SIP componnets vc_noOfCompWithSip := 3; vc_noOfCompWoSip := 1; //Create p_diameterComponent_ocf := DiameterRfRo.create ; if (PX_SIPsupport) { p_imsComponent_ue := ImsComponent.create ; p_imsComponent_as := ImsComponent.create ; } // Connect mtc sync port connect(self:syncPort, self:syncPort); // Connect client sync port connect(p_diameterComponent_ocf:syncPort, self:syncPort) ; if (PX_SIPsupport) { connect(p_imsComponent_ue:syncPort, self:syncPort) ; connect(p_imsComponent_as:syncPort, self:syncPort) ; } //Map map(p_diameterComponent_ocf:DIAMP, system:OCF_Ro);// Diameter Init test Configuration if (PX_SIPsupport) { map(p_imsComponent_ue:SIPP, system:UE_Gm); map(p_imsComponent_as:SIPP, system:AS_Isc); } activate(a_mtc_shutdown()); f_setVerdict(v_ret); } // End of f_cf_1Ro_1Gm_1Isc_ocfUp /** * * @desc Creates test configuration of CF_1Ro_2Gm_1Isc - OCF is SUT * @param p_diameterComponent_ocf ocf component * @param p_imsComponent_ue ue component * @param p_imsComponent_ue ue2 component * @param p_imsComponent_as as component */ function f_cf_1Ro_2Gm_1Isc_ocfUp(out DiameterRfRo p_diameterComponent_ocf, out ImsComponent p_imsComponent_ue, out ImsComponent p_imsComponent_ue2, out ImsComponent p_imsComponent_as) runs on DiameterRfRo { //Variables var FncRetCode v_ret := e_success; //Number of components with or without SIP componnets vc_noOfCompWithSip := 4; vc_noOfCompWoSip := 1; //Create p_diameterComponent_ocf := DiameterRfRo.create ; if (PX_SIPsupport) { p_imsComponent_ue := ImsComponent.create ; p_imsComponent_ue2 := ImsComponent.create ; p_imsComponent_as := ImsComponent.create ; } // Connect mtc sync port connect(self:syncPort, self:syncPort); // Connect client sync port connect(p_diameterComponent_ocf:syncPort, self:syncPort) ; if (PX_SIPsupport) { connect(p_imsComponent_ue:syncPort, self:syncPort) ; connect(p_imsComponent_ue2:syncPort, self:syncPort) ; connect(p_imsComponent_as:syncPort, self:syncPort) ; } //Map map(p_diameterComponent_ocf:DIAMP, system:OCF_Ro);// Diameter Init test Configuration if (PX_SIPsupport) { map(p_imsComponent_ue:SIPP, system:UE_Gm); map(p_imsComponent_ue2:SIPP, system:UE_Gm2); map(p_imsComponent_as:SIPP, system:AS_Isc); } activate(a_mtc_shutdown()); f_setVerdict(v_ret); } // End of f_cf_1Ro_2Gm_1Isc_ocfUp /** * * @desc Creates test configuration of CF_2Ro_2Gm_1Isc - OCF is SUT * @param p_diameterComponent_ocf ocf component * @param p_diameterComponent_ocf ocf2 component * @param p_imsComponent_ue ue component * @param p_imsComponent_ue ue2 component * @param p_imsComponent_as as component */ function f_cf_2Ro_2Gm_1Isc_ocfUp(out DiameterRfRo p_diameterComponent_ocf, out DiameterRfRo p_diameterComponent_ocf2, out ImsComponent p_imsComponent_ue, out ImsComponent p_imsComponent_ue2, out ImsComponent p_imsComponent_as) runs on DiameterRfRo { //Variables var FncRetCode v_ret := e_success; //Number of components with or without SIP componnets vc_noOfCompWithSip := 5; vc_noOfCompWoSip := 2; //Create p_diameterComponent_ocf := DiameterRfRo.create ; p_diameterComponent_ocf2 := DiameterRfRo.create ; if (PX_SIPsupport) { p_imsComponent_ue := ImsComponent.create ; p_imsComponent_ue2 := ImsComponent.create ; p_imsComponent_as := ImsComponent.create ; } // Connect mtc sync port connect(self:syncPort, self:syncPort); // Connect client sync port connect(p_diameterComponent_ocf:syncPort, self:syncPort) ; connect(p_diameterComponent_ocf2:syncPort, self:syncPort) ; if (PX_SIPsupport) { connect(p_imsComponent_ue:syncPort, self:syncPort) ; connect(p_imsComponent_ue2:syncPort, self:syncPort) ; connect(p_imsComponent_as:syncPort, self:syncPort) ; } //Map map(p_diameterComponent_ocf:DIAMP, system:OCF_Ro);// Diameter Init test Configuration map(p_diameterComponent_ocf2:DIAMP, system:OCF_Ro2);// Diameter Init test Configuration if (PX_SIPsupport) { map(p_imsComponent_ue:SIPP, system:UE_Gm); map(p_imsComponent_ue2:SIPP, system:UE_Gm2); map(p_imsComponent_as:SIPP, system:AS_Isc); } activate(a_mtc_shutdown()); f_setVerdict(v_ret); } // End of f_cf_2Ro_2Gm_1Isc_ocfUp } // End of group cfUp group cfDown { /** * * @desc Deletes configuration of cf_1Rf_ctf - CDF is SUT * @param p_diameterComponent_ctf diameter component */ function f_cf_1Rf_ctfDown(in DiameterRfRo p_diameterComponent_ctf) runs on DiameterRfRo { // Deactivte all deactivate; // Unmap all unmap; // Disconnect all disconnect; } // End of f_cf_1Rf_ctfDown /** * * @desc Deletes configuration of CF_1Rf_ - CTF is SUT * @param p_diameterComponent_cdf diameter component */ function f_cf_1Rf_cdfDown(in DiameterRfRo p_diameterComponent_cdf) runs on DiameterRfRo { // Deactivte all deactivate; // Unmap all unmap; // Disconnect all disconnect; } // End of f_cf_1Rf_cdfDown /** * * @desc Deletes configuration of CF_1Rf_1Gm_1Mw - CTF is SUT * @param p_diameterComponent_cdf cdf component * @param p_imsComponent_ue ue component * @param p_imsComponent_cscf cscf component */ function f_cf_1Rf_1Gm_1Mw_cdfDown(in DiameterRfRo p_diameterComponent_cdf, in ImsComponent p_imsComponent_gm, in ImsComponent p_imsComponent_cscf) runs on DiameterRfRo system TestAdapter { // Deactivte all deactivate; // Unmap all unmap; // Disconnect all disconnect; } // End of f_cf_1Rf_1Gm_1Mw_cdfDown /** * * @desc Deletes configuration of CF_2Rf_1Gm_1Mw - CTF is SUT * @param p_diameterComponent_cdf cdf component * @param p_diameterComponent_cdf2 cdf2 component * @param p_imsComponent_ue ue component * @param p_imsComponent_cscf cscf component */ function f_cf_2Rf_1Gm_1Mw_cdfDown(in DiameterRfRo p_diameterComponent_cdf, in DiameterRfRo p_diameterComponent_cdf2, in ImsComponent p_sipGm_ue, in ImsComponent p_imsComponent_cscf) runs on DiameterRfRo { // Deactivte all deactivate; // Unmap all unmap; // Disconnect all disconnect; } // End of f_cf_2Rf_1Gm_1Mw_cdfDown /** * * @desc Deletes configuration of cf_1Ro_ctf - OCF is SUT * @param p_diameterComponent_ctf ctf component */ function f_cf_1Ro_ctfDown(in DiameterComponent p_diameterComponent_ctf) runs on DiameterRfRo { // Deactivte all deactivate; // Unmap all unmap; // Disconnect all disconnect; } // End of f_cf_1Ro_ctfDown /** * * @desc Deletes configuration of CF_1Ro_ - CTF is SUT * @param p_diameterComponent_ocf ocf component */ function f_cf_1Ro_ocfDown(in DiameterRfRo p_diameterComponent_ocf) runs on DiameterRfRo { // Deactivte all deactivate; // Unmap all unmap; // Disconnect all disconnect; } // End of f_cf_1Ro_ocfDown /** * * @desc Deletes configuration of CF_1Ro_1Gm_1Mw - CTF is SUT * @param p_diameterComponent_ocf ocf component * @param p_imsComponent_ue ue component * @param p_imsComponent_cscf cscf component */ function f_cf_1Ro_1Gm_1Mw_ocfDown(in DiameterRfRo p_diameterComponent_ocf, in ImsComponent p_imsComponent_ue, in ImsComponent p_imsComponent_cscf) runs on DiameterRfRo { // Deactivte all deactivate; // Unmap all unmap; // Disconnect all disconnect; } // End of f_cf_1Ro_1Gm_1Mw_ocfDown /** * * @desc Deletes configuration of CF_2Ro_1Gm_1Mw - OCF is SUT * @param p_diameterComponent_ocf ocf component * @param p_diameterComponent_ocf ocf2 component * @param p_imsComponent_ue ue component * @param p_imsComponent_cscf cscf component */ function f_cf_2Ro_1Gm_1Mw_ocfDown(in DiameterRfRo p_diameterComponent_ocf, in DiameterRfRo p_diameterComponent_ocf2, in ImsComponent p_imsComponent_ue, in ImsComponent p_imsComponent_cscf) runs on DiameterRfRo { // Deactivte all deactivate; // Unmap all unmap; // Disconnect all disconnect; } // End of f_cf_2Ro_1Gm_1Mw_ocfDown /** * * @desc Deletes configuration of CF_1Ro_1Gm_1Isc - CTF is SUT * @param p_diameterComponent_ocf ocf component * @param p_imsComponent_ue ue component * @param p_imsComponent_as as component */ function f_cf_1Ro_1Gm_1Isc_ocfDown(in DiameterRfRo p_diameterComponent_ocf, in ImsComponent p_imsComponent_ue, in ImsComponent p_imsComponent_as) runs on DiameterRfRo { // Deactivte all deactivate; // Unmap all unmap; // Disconnect all disconnect; } // End of f_cf_1Ro_1Gm_1Isc_ocfDown /** * * @desc Deletes configuration of CF_1Ro_2Gm_1Isc - OCF is SUT * @param p_diameterComponent_ocf ocf component * @param p_imsComponent_ue ue component * @param p_imsComponent_ue ue2 component * @param p_imsComponent_as as component */ function f_cf_1Ro_2Gm_1Isc_ocfDown(in DiameterRfRo p_diameterComponent_ocf, in ImsComponent p_imsComponent_ue, in ImsComponent p_imsComponent_ue2, in ImsComponent p_imsComponent_as) runs on DiameterRfRo { // Deactivte all deactivate; // Unmap all unmap; // Disconnect all disconnect; } // End of f_cf_1Ro_2Gm_1Isc_ocfDown /** * * @desc Deletes configuration of CF_2Ro_2Gm_1Isc - OCF is SUT * @param p_diameterComponent_ocf ocf component * @param p_diameterComponent_ocf ocf2 component * @param p_imsComponent_ue ue component * @param p_imsComponent_ue ue2 component * @param p_imsComponent_as as component */ function f_cf_2Ro_2Gm_1Isc_ocfDown(in DiameterRfRo p_diameterComponent_ocf, in DiameterRfRo p_diameterComponent_ocf2, in ImsComponent p_imsComponent_ue, in ImsComponent p_imsComponent_ue2, in ImsComponent p_imsComponent_as) runs on DiameterRfRo { // Deactivte all deactivate; // Unmap all unmap; // Disconnect all disconnect; } // End of f_cf_2Ro_2Gm_1Isc_ocfDown } // End of group cfDown group shutDownAltsteps { altstep a_mtc_shutdown() runs on SelfSyncComp { [] syncSendPort.receive(m_syncServerStop){ tc_sync.stop ; log("**** a_mtc_shutdown: MTC component received STOP signal **** "); } } } // Endgroup shutDownAltsteps } // End of module DiameterRfRo_TestConfiguration DiameterRfRo_TestControl.ttcn 0000664 0000000 0000000 00000021707 13523273236 0031545 0 ustar 00root root 0000000 0000000 DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn /** * @author STF 490 * @version $Id$ * @desc This module provides execution part for RfRo test cases. */ module DiameterRfRo_TestControl { // LibSip import from LibSip_SIPTypesAndValues all; // DiameterRfRo import from DiameterRfRo_PICS all; import from DiameterRfRo_TestCases all; control { if (PICS_RF_CDF_IUT) { execute(TC_RF_CDF_MS_01()); execute(TC_RF_CDF_MS_02()); if (PICS_RF_CDF_EVENT_BASED_CHARGING) { execute(TC_RF_CDF_TC_01()); } if (PICS_RF_CDF_SESSION_BASED_CHARGING) { execute(TC_RF_CDF_TC_02()); execute(TC_RF_CDF_TC_03()); execute(TC_RF_CDF_TC_04()); execute(TC_RF_CDF_EC_01()); execute(TC_RF_CDF_EC_02()); } } if (PICS_RF_CTF_IUT) { execute(TC_RF_CTF_MS_01()); execute(TC_RF_CTF_MS_02()); if (PICS_RF_CTF_EVENT_BASED_CHARGING) { // execute(TC_RF_CTF_TC_01()); } } if (PICS_RO_OCF_IUT) { execute(TC_RO_OCF_MS_01()); execute(TC_RO_OCF_MS_02()); if (PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING) { execute(TC_RO_OCF_TC_01()); execute(TC_RO_OCF_TC_02()); execute(TC_RO_OCF_TC_03()); execute(TC_RO_OCF_TC_04()); } if (PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION) { execute(TC_RO_OCF_TC_05()); execute(TC_RO_OCF_TC_06()); } if (PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION) { execute(TC_RO_OCF_TC_07()); execute(TC_RO_OCF_TC_08()); execute(TC_RO_OCF_TC_09()); } if (PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING) { execute(TC_RO_OCF_EC_01()); } if (PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION) { execute(TC_RO_OCF_EC_02()); execute(TC_RO_OCF_EC_03()); execute(TC_RO_OCF_EC_04()); } if (PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING) { execute(TC_RO_OCF_CH_01()); } if (PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION) { execute(TC_RO_OCF_CH_02()); } if (PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION) { execute(TC_RO_OCF_CH_03()); } if (PICS_RO_OCF_RE_AUTHORIZATION and PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION) { execute(TC_RO_OCF_RE_01()); } if (PICS_RO_OCF_IMMEDIATE_EVENT_CHARGING) { execute(TC_RO_OCF_FH_01()); if (PICS_RO_OCF_DDFH_TERMINATE_OR_BUFFER) { execute(TC_RO_OCF_FH_02()); } if (PICS_RO_OCF_DDFH_CONTINUE) { execute(TC_RO_OCF_FH_03()); } } if (PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_FAILOVER) { execute(TC_RO_OCF_FA_01()); execute(TC_RO_OCF_FA_02()); } if (PICS_RO_OCF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_OCF_CREDIT_POOLING) { execute(TC_RO_OCF_CP_01()); execute(TC_RO_OCF_CP_02()); } if (PICS_RO_OCF_SESSION_CHARGING_WITH_UNIT_RESERVATION) { if (PICS_RO_OCF_RE_AUTHORIZATION_QUOTA_HOLDING_TIME) { execute(TC_RO_OCF_OP_01()); execute(TC_RO_OCF_OP_04()); execute(TC_RO_OCF_OP_07()); execute(TC_RO_OCF_OP_08()); } if (PICS_RO_OCF_RE_AUTHORIZATION_TRIGGER) { execute(TC_RO_OCF_OP_02()); execute(TC_RO_OCF_OP_03()); execute(TC_RO_OCF_OP_05()); execute(TC_RO_OCF_OP_06()); } if (PICS_RO_OCF_TRESHOLD_BASED_RE_AUTHORIZATION_TIME_QUOTA_TRESHOLD) { execute(TC_RO_OCF_OP_09()); } if (PICS_RO_OCF_QUOTA_CONSUMPTION_TIME and PICS_RO_OCF_SERVICE_TERMINATION) { execute(TC_RO_OCF_OP_10()); } if (PICS_RO_OCF_SERVICE_TERMINATION_WITH_CCA and PICS_RO_OCF_SERVICE_TERMINATION_WITH_ASR) { execute(TC_RO_OCF_OP_11()); } if (PICS_RO_OCF_ENVELOPE_REPORTING) { execute(TC_RO_OCF_OP_12()); } if (PICS_RO_OCF_TIME_QUOTA_MECHANISM) { execute(TC_RO_OCF_OP_13()); } if (PICS_RO_OCF_QUOTA_CONSUMPTION_TIME and PICS_RO_OCF_ENVELOPE_REPORTING and PICS_RO_OCF_OFFLINE_CHARGING_INFORMATION) { execute(TC_RO_OCF_OP_14()); } } } if (PICS_RO_CTF_IUT) { execute(TC_RO_CTF_MS_01()); execute(TC_RO_CTF_MS_02()); if (PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING) { execute(TC_RO_CTF_TC_01()); execute(TC_RO_CTF_TC_02()); execute(TC_RO_CTF_TC_03()); execute(TC_RO_CTF_TC_04()); execute(TC_RO_CTF_TC_05()); } if (PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION) { execute(TC_RO_CTF_TC_06()); execute(TC_RO_CTF_TC_07()); } if (PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION) { execute(TC_RO_CTF_TC_08()); execute(TC_RO_CTF_TC_09()); execute(TC_RO_CTF_TC_10()); } if (PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING) { execute(TC_RO_CTF_EC_01()); execute(TC_RO_CTF_EC_02()); } if (PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION) { execute(TC_RO_CTF_EC_03()); execute(TC_RO_CTF_EC_04()); } if (PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION) { execute(TC_RO_CTF_EC_05()); if (PICS_RO_CTF_DDFH_TERMINATE_OR_BUFFER and not(PICS_RO_CTF_FAILOVER)) { execute(TC_RO_CTF_EC_06()); } } if (PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_DDFH_CONTINUE and not(PICS_RO_CTF_FAILOVER)) { execute(TC_RO_CTF_EC_07()); } if (PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION) { execute(TC_RO_CTF_CH_01()); execute(TC_RO_CTF_CH_02()); } if (PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and not(PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION)) { execute(TC_RO_CTF_CH_03()); } if (PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION) { execute(TC_RO_CTF_CH_04()); execute(TC_RO_CTF_CH_05()); } if (PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and not(PICS_RO_CTF_TARIFF_CHANGES_DURING_ACTIVE_SESSION)) { execute(TC_RO_CTF_CH_06()); } if (PICS_RO_CTF_RE_AUTHORIZATION) { execute(TC_RO_CTF_RE_01()); } if (PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_CCFH_CONTINUE) { execute(TC_RO_CTF_FH_01()); } if (PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and (PICS_RO_CTF_DDFH_TERMINATE_OR_BUFFER or PICS_RO_CTF_DDFH_CONTINUE)) { execute(TC_RO_CTF_FH_02()); } if (PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING and PICS_RO_CTF_FAILOVER) { execute(TC_RO_CTF_FA_01()); execute(TC_RO_CTF_FA_02()); } if (PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_FAILOVER) { execute(TC_RO_CTF_FA_03()); execute(TC_RO_CTF_FA_04()); } if (PICS_RO_CTF_IMMEDIATE_EVENT_CHARGING) { execute(TC_RO_CTF_CP_01()); } if (PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION and PICS_RO_CTF_SUB_SESSION) { execute(TC_RO_CTF_CP_02()); } } } // End of 'Control' statement } // End of module DiameterRfRo_TestControl DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/DiameterRfRo/ttcn/DiameterRfRo_TestSystem.ttcn0000664 0000000 0000000 00000003130 13523273236 0031456 0 ustar 00root root 0000000 0000000 /** * @author STF 490 * @version $Id$ * @desc This module provides the types and ports used by the test component * for SIP-IMS-DIAMETER tests. */ module DiameterRfRo_TestSystem { // LibCommon import from LibCommon_Sync all; //LibDiameter import from LibDiameter_Interface all; //LibSip import from LibSip_Interface all; group SystemConfiguration { group TestComponents { group TestSystemInterfaces { /* ** @desc The test system interface */ type component TestAdapter { port DiameterPort CTF_Rf, CDF_Rf, CDF_Rf2, // Rf ports CTF_Ro, OCF_Ro, OCF_Ro2; // Ro ports port SipPort UE_Gm, UE_Gm2, CSCF_Mw, IBCF_Ic, AS_Isc; // Global variables } } // End of group TestSystemInterfaces type component DiameterRfRo extends ServerSyncComp, DiameterComponent { //Folowing variables vc_noOfCompWoSip, vc_noOfCompWithSip are initialized here and they are set before each test started within configuration function var integer vc_noOfCompWoSip := 1; //Number of components without SIP components var integer vc_noOfCompWithSip := 1; //Number of components with SIP components } // End of component DiameterRfRo } // End of group TestComponents } // End of group SystemConfiguration } // End of module DiameterRfRo_TestSystem DiameterRfRo-219844c1b4afc64f898a234b91185425d40b7a25/LICENSE 0000664 0000000 0000000 00000002703 13523273236 0021554 0 ustar 00root root 0000000 0000000 Copyright 2019 ETSI Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.