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
{
var default v_def_diameter_catchEvent;
//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;
//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)
{
}
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)
{
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
350
351
352
353
354
355
356
357
358
359
360
361
}
} // 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
} //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
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
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_IUT, // containing an Origin-Host AVP
vc_originRealm_IUT, // containing an Origin-Realm AVP
vc_destinationRealm_IUT, // 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
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
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
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
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;
}
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
} //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 of module DiameterGx_Steps