Newer
Older
* @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_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;
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 DiameterComponent {
//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_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_AVP(3);
vc_send_hopid:=hex2int('00000100'H);
vc_send_endid:=hex2int('01000000'H);
} // End of function f_DiameterRf_init
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
* @desc This is a test step that init global variables
* @param
*/
function f_DiameterRf_init2()
runs on DiameterComponent {
//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);
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_IPADDR2));
vc_accountingRecordNumber := mw_accounting_Record_Number_AVP(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 DiameterComponent {
//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_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_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
//TODO check for 2nd Ro or Rf configuration!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
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 DiameterComponent
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
)
)
);
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, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
mw_accounting_Record_Type_AVP( // containing an Accounting-Record-Type AVP
mw_accounting_Record_Number_AVP(// containing an Acct-Application-Id AVP
p_cC_Request_Number // indicating the value
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) Multiple_Services_Credit_Control_AVP p_multiple_Services_Credit_Control := omit
) runs on DiameterComponent {
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
md_cC_Request_Type_AVP(
p_cC_Request_Ty_Type
),
md_cC_Request_Number_AVP(
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,
vc_originRealm,
mw_auth_Application_Id_AVP(4),
mw_cC_Request_Type_AVP(
p_cC_Request_Ty_Type
),
p_cC_Request_Number
)
)
)
);
}
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
/**
* @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 (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 DiameterComponent {
f_awaiting_CCR(
mdw_cCR(
?,
mdw_ccrBodyAvps(
vc_originHost, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
vc_destinationRealm, // containing a Destination-Realm AVP
mw_cC_Request_Type_AVP(p_cC_Request_Ty_Type),// containing a CC-Request-Type AVP
mw_cC_Request_Number_AVP(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
} // End of group RO
function f_preamble_Rf_CDF() runs on DiameterComponent
{
if(PX_DIAM_LLP_ENABLED)
{
f_preambleClient();
}
f_DiameterRf_init();
function f_preamble_Rf_CDF2() runs on DiameterComponent
{
if(PX_DIAM_LLP_ENABLED)
{
f_preambleClient();
}
f_DiameterRf_init2();
f_preambleDiameterBaseClient(c_applIdRfRo);
}
function f_preamble_Rf_CTF() runs on DiameterComponent
{
if(PX_DIAM_LLP_ENABLED)
{
f_preambleServer();
}
f_DiameterRf_init();
function f_preamble_Ro_OCF() runs on DiameterComponent
{
if(PX_DIAM_LLP_ENABLED)
{
f_preambleClient();
}
f_DiameterRo_init();
function f_preamble_Ro_CTF() runs on DiameterComponent
{
if(PX_DIAM_LLP_ENABLED)
{
f_preambleServer();
}
f_DiameterRo_init();
f_preambleDiameterBaseServer(c_applIdRfRo);
} // End of group Preambles
function f_postamble_Rf_CDF() runs on DiameterComponent
{
f_postambleDiameterBase();
if(PX_DIAM_LLP_ENABLED)
{
f_postambleDisconnect();
}
// Deactivate defaults
deactivate;
}
function f_postamble_Rf_CDF2() runs on DiameterComponent
{
f_postamble_Rf_CDF();
}
if(PX_DIAM_LLP_ENABLED)
{
f_postambleDisconnect();
}
if(PX_DIAM_LLP_ENABLED)
{
f_postambleDisconnect();
}
if(PX_DIAM_LLP_ENABLED)
{
f_postambleDisconnect();
}
} // End of group Postambles
} // End of group AVPOperations
} // End of group CheckFunctions
group SendMessage {
/**
* @desc Function used to trigger a AC-Request message
* @param p_acrMSG AC-Request message to send
* @verdict Unchanged
*/
function f_triggerAcRequest(in template (value) ACR_MSG p_acrMSG)
runs on DiameterComponent {
DIAMP.send(
DIAMETER_MSG : { aCR_MSG := p_acrMSG }
);
} // End of function f_triggerAcRequest
} // End of group SendMessage
} // End of module DiameterGx_Steps