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()
//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));
pintar
committed
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()
//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_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));
pintar
committed
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()
//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_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()
//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
{
if(PX_DIAM_LLP_ENABLED)
{
}
function f_preamble_Rf_CDF2() runs on DiameterRfRo
{
if(PX_DIAM_LLP_ENABLED)
{
}
function f_preamble_Rf_CTF() runs on DiameterRfRo
{
if(PX_DIAM_LLP_ENABLED)
{
}
function f_preamble_Ro_OCF() runs on DiameterRfRo
{
if(PX_DIAM_LLP_ENABLED)
{
}
function f_preamble_Ro_OCF2() runs on DiameterRfRo
{
if(PX_DIAM_LLP_ENABLED)
{
}
function f_preamble_Ro_CTF() runs on DiameterRfRo
{
if(PX_DIAM_LLP_ENABLED)
{
259
260
261
262
263
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
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
}
} // 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 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
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_IUT, // containing an Origin-Host AVP
vc_originRealm_IUT, // containing an Origin-Realm AVP
pintar
committed
mw_accounting_Record_Type( // containing an Accounting-Record-Type AVP
pintar
committed
mw_accounting_Record_Number(// containing an Acct-Application-Id AVP
p_cC_Request_Number // indicating the value
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
} //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, // containing an Origin-Host AVP
vc_originRealm, // containing an Origin-Realm AVP
vc_destinationRealm, // 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_
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
f_send_CCR(
md_cCR(
vc_sessionId,
md_ccrBodyAvps_TypeOfCharging(
vc_originHost,
vc_originRealm,
vc_destinationRealm,
pintar
committed
md_cC_Request_Type(
pintar
committed
md_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
),
pintar
committed
mw_auth_Application_Id(4),
mw_cC_Request_Type(
pintar
committed
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 := *
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
pintar
committed
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
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
vc_destinationRealm, // containing a Destination-Realm AVP
vc_destinationHost, // 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 SendMessage
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
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;
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 group DefaultTestStep
} // End of module DiameterGx_Steps