Loading DiameterGx/ttcn/DiameterGx_Gx_TCFunctions.ttcn +97 −0 Original line number Diff line number Diff line Loading @@ -2320,6 +2320,8 @@ module DiameterGx_Gx_TCFunctions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync action("Trigger for Emergency service"); f_awaiting_CCR(mw_CCR_Request_EMS(vc_sessionId, vc_originHost, vc_originRealm, Loading @@ -2343,6 +2345,52 @@ module DiameterGx_Gx_TCFunctions { }//end group TP_PCRERole_EMS group TP_PCEFRole_UMC { //Usage monitoring control /* * @desc This is the test case function TC_PCEF_UMC_01 * @param */ function f_TC_PCEF_UMC_01() runs on DiameterComponent { f_preamble_PCRF(); f_awaiting_CCR(mw_CCR_Request(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, mw_cC_Request_Type(INITIAL_REQUEST_E), *, *, *)); f_send_CCA(m_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_send_RAR(DiameterGx_Templates.m_RAR_EvTrigger_UMI // RAR in Rx-module has different header! (vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost, m_event_Trigger(USAGE_REPORT_E), m_usageMonitoringInformation(omit, omit))); f_awaiting_RAA(mw_RAA_basic(vc_sessionId,?,?)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync f_awaiting_CCR(mw_CCR_basic(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, mw_cC_Request_Type(TERMINATION_REQUEST_E) )); f_send_CCA(m_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync f_postamble_PCRF(); } // end function f_TC_PCEF_UMC_01 }//end group TP_PCEFRole_UMC group TP_PCEFRole_IRS { //IMS Restoration Support }//end group TP_PCEFRole_IRS Loading @@ -2351,6 +2399,55 @@ module DiameterGx_Gx_TCFunctions { group TP_PCEFRole_SDC { //Sponsored Data Connectivity }//end group TP_PCEFRole_SDC group TP_PCEFRole_RAU { //Reporting Accumulated Usage /* * @desc This is the test case function TC_PCEF_RAU_01 * @param */ function f_TC_PCEF_RAU_01() runs on DiameterComponent { f_preamble_PCRF(); f_awaiting_CCR(mw_CCR_Request(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, mw_cC_Request_Type(INITIAL_REQUEST_E), *, *, *)); f_send_CCA(m_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync action("Trigger for usage threshold reached"); f_awaiting_CCR(mw_CCR_Request_EvtTrig_UMI(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, mw_cC_Request_Type(UPDATE_REQUEST_E), mw_usageMonitoringInfo_Key_UsedServiceUnit(mw_usedServiceUnit(*,*)), mw_eventTrigger(USAGE_REPORT_E))); // check that uplink or downlink volune has been indicated if (not (ispresent(vc_recvDiamMsg.cCR_MSG.usage_Monitoring_Information[0].used_Service_Unit.cC_Input_Octets) or ispresent(vc_recvDiamMsg.cCR_MSG.usage_Monitoring_Information[0].used_Service_Unit.cC_Output_Octets) ) ) {setverdict(fail)}; f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync f_send_CCA(m_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync f_postamble_PCRF(); } // end function f_TC_PCEF_RAU_01 }//end group TP_PCEFRole_RAU } //end group TP_PCEFRole Loading DiameterGx/ttcn/DiameterGx_PIXITS.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -288,7 +288,7 @@ module DiameterGx_PIXITS /** @desc octectstring, PIXIT item A.1/ * avp_Data within MONITORING_KEY_AVP is of octectstring type * (parameter is part of RAR message) * (parameter is part of RAR/CCR message) */ modulepar octetstring PX_MONITORING_KEY := '01020304050607'O; Loading DiameterGx/ttcn/DiameterGx_Templates.ttcn +75 −3 Original line number Diff line number Diff line Loading @@ -771,6 +771,22 @@ module DiameterGx_Templates { } template Usage_Monitoring_Information_AVP m_usageMonitoringInformation (template Monitoring_Key_AVP p_monitoringKey, template Granted_Service_Unit_AVP p_grantedServiceUnit) := { aVP_Header := m_aVP_HeaderVid(c_vendIdUsage_Monitoring_Information_AVP, 8+lengthof(encvalue(p_monitoringKey))+lengthof(encvalue(p_grantedServiceUnit)), omit), monitoring_Key := p_monitoringKey, granted_Service_Unit := p_grantedServiceUnit, used_Service_Unit := omit, usage_Monitoring_Level := omit, usage_Monitoring_Report := omit, usage_Monitoring_Support := omit, aVP_Type := omit }; }//end group sendingTemplatesForAVPs group awaitingTemplatesForAVPs{ Loading Loading @@ -799,7 +815,7 @@ module DiameterGx_Templates { aVP_Data := p_avpData } template Subscription_Id_Data_AVP mw_subscription_Id_Data(UTF8String p_avpData):= template Subscription_Id_Data_AVP mw_subscription_Id_Data(template UTF8String p_avpData):= { aVP_Header := mw_aVP_Header_any, aVP_Data := p_avpData Loading Loading @@ -981,12 +997,26 @@ module DiameterGx_Templates { granted_Service_Unit := mw_grantedServiceUnit_dummy } template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_Key_UsedServiceUnit (template Used_Service_Unit_AVP p_usedServiceUnit) modifies mw_usageMonitoringInfo_dummy := { aVP_Header := mw_aVP_Header_any, monitoring_Key := mw_monitoringKey_predefined, used_Service_Unit := p_usedServiceUnit } template Monitoring_Key_AVP mw_monitoringKey_any := { aVP_Header := mw_aVP_Header_any, aVP_Data := ? } template Monitoring_Key_AVP mw_monitoringKey_predefined := { aVP_Header := mw_aVP_Header_any, aVP_Data := PX_MONITORING_KEY } template Event_Trigger_AVP mw_eventTrigger(template Event_Trigger p_aVP_Data) := { aVP_Header := mw_aVP_Header_any, Loading Loading @@ -1081,6 +1111,19 @@ module DiameterGx_Templates { aVP_Data := p_avpData } template Used_Service_Unit_AVP mw_usedServiceUnit(template CC_Input_Octets_AVP p_CCInputOctets, template CC_Output_Octets_AVP p_CCOutputOctets) := { aVP_Header := mw_aVP_Header(c_vendIdCalled_Station_Id_AVP), tariff_Change_Usage := *, cC_Time := *, cC_Money := *, cC_Total_Octets := ?, cC_Input_Octets := *, cC_Output_Octets := *, cC_Service_Specific_Units := *, aVP_Type := * } }//end group awaitingTemplatesForAVPs } //end group SpecificAVPHeaders } //end group HeaderFieldTemplates Loading Loading @@ -1408,6 +1451,21 @@ module DiameterGx_Templates { } template RAR_MSG m_RAR_EvTrigger_UMI(template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, template Destination_Realm_AVP p_destinationRealm, template Destination_Host_AVP p_destinationHost, template Event_Trigger_AVP p_eventTrigger, template Usage_Monitoring_Information_AVP p_usageMonitoringInformation) modifies m_RAR_basic := { event_Trigger := {p_eventTrigger}, usage_Monitoring_Information := {p_usageMonitoringInformation} } template RAR_MSG m_RAR_CharRuleRemove(template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, Loading Loading @@ -1474,6 +1532,20 @@ module DiameterGx_Templates { qoS_Information := p_qoSInformation } template CCR_MSG mw_CCR_Request_EvtTrig_UMI(template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, template Destination_Realm_AVP p_destinationRealm, template CC_Request_Type_AVP p_cCRequestType, template Usage_Monitoring_Information_AVP p_usageMonitoringInformation, template Event_Trigger_AVP p_eventTrigger ) modifies mw_CCR_basic := { subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),mw_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, usage_Monitoring_Information := superset(p_usageMonitoringInformation), event_Trigger := superset(p_eventTrigger) } template CCR_MSG mw_CCR_AccessNetChargId(template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, Loading Loading
DiameterGx/ttcn/DiameterGx_Gx_TCFunctions.ttcn +97 −0 Original line number Diff line number Diff line Loading @@ -2320,6 +2320,8 @@ module DiameterGx_Gx_TCFunctions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync action("Trigger for Emergency service"); f_awaiting_CCR(mw_CCR_Request_EMS(vc_sessionId, vc_originHost, vc_originRealm, Loading @@ -2343,6 +2345,52 @@ module DiameterGx_Gx_TCFunctions { }//end group TP_PCRERole_EMS group TP_PCEFRole_UMC { //Usage monitoring control /* * @desc This is the test case function TC_PCEF_UMC_01 * @param */ function f_TC_PCEF_UMC_01() runs on DiameterComponent { f_preamble_PCRF(); f_awaiting_CCR(mw_CCR_Request(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, mw_cC_Request_Type(INITIAL_REQUEST_E), *, *, *)); f_send_CCA(m_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_send_RAR(DiameterGx_Templates.m_RAR_EvTrigger_UMI // RAR in Rx-module has different header! (vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost, m_event_Trigger(USAGE_REPORT_E), m_usageMonitoringInformation(omit, omit))); f_awaiting_RAA(mw_RAA_basic(vc_sessionId,?,?)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync f_awaiting_CCR(mw_CCR_basic(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, mw_cC_Request_Type(TERMINATION_REQUEST_E) )); f_send_CCA(m_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync f_postamble_PCRF(); } // end function f_TC_PCEF_UMC_01 }//end group TP_PCEFRole_UMC group TP_PCEFRole_IRS { //IMS Restoration Support }//end group TP_PCEFRole_IRS Loading @@ -2351,6 +2399,55 @@ module DiameterGx_Gx_TCFunctions { group TP_PCEFRole_SDC { //Sponsored Data Connectivity }//end group TP_PCEFRole_SDC group TP_PCEFRole_RAU { //Reporting Accumulated Usage /* * @desc This is the test case function TC_PCEF_RAU_01 * @param */ function f_TC_PCEF_RAU_01() runs on DiameterComponent { f_preamble_PCRF(); f_awaiting_CCR(mw_CCR_Request(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, mw_cC_Request_Type(INITIAL_REQUEST_E), *, *, *)); f_send_CCA(m_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync action("Trigger for usage threshold reached"); f_awaiting_CCR(mw_CCR_Request_EvtTrig_UMI(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, mw_cC_Request_Type(UPDATE_REQUEST_E), mw_usageMonitoringInfo_Key_UsedServiceUnit(mw_usedServiceUnit(*,*)), mw_eventTrigger(USAGE_REPORT_E))); // check that uplink or downlink volune has been indicated if (not (ispresent(vc_recvDiamMsg.cCR_MSG.usage_Monitoring_Information[0].used_Service_Unit.cC_Input_Octets) or ispresent(vc_recvDiamMsg.cCR_MSG.usage_Monitoring_Information[0].used_Service_Unit.cC_Output_Octets) ) ) {setverdict(fail)}; f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync f_send_CCA(m_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync f_postamble_PCRF(); } // end function f_TC_PCEF_RAU_01 }//end group TP_PCEFRole_RAU } //end group TP_PCEFRole Loading
DiameterGx/ttcn/DiameterGx_PIXITS.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -288,7 +288,7 @@ module DiameterGx_PIXITS /** @desc octectstring, PIXIT item A.1/ * avp_Data within MONITORING_KEY_AVP is of octectstring type * (parameter is part of RAR message) * (parameter is part of RAR/CCR message) */ modulepar octetstring PX_MONITORING_KEY := '01020304050607'O; Loading
DiameterGx/ttcn/DiameterGx_Templates.ttcn +75 −3 Original line number Diff line number Diff line Loading @@ -771,6 +771,22 @@ module DiameterGx_Templates { } template Usage_Monitoring_Information_AVP m_usageMonitoringInformation (template Monitoring_Key_AVP p_monitoringKey, template Granted_Service_Unit_AVP p_grantedServiceUnit) := { aVP_Header := m_aVP_HeaderVid(c_vendIdUsage_Monitoring_Information_AVP, 8+lengthof(encvalue(p_monitoringKey))+lengthof(encvalue(p_grantedServiceUnit)), omit), monitoring_Key := p_monitoringKey, granted_Service_Unit := p_grantedServiceUnit, used_Service_Unit := omit, usage_Monitoring_Level := omit, usage_Monitoring_Report := omit, usage_Monitoring_Support := omit, aVP_Type := omit }; }//end group sendingTemplatesForAVPs group awaitingTemplatesForAVPs{ Loading Loading @@ -799,7 +815,7 @@ module DiameterGx_Templates { aVP_Data := p_avpData } template Subscription_Id_Data_AVP mw_subscription_Id_Data(UTF8String p_avpData):= template Subscription_Id_Data_AVP mw_subscription_Id_Data(template UTF8String p_avpData):= { aVP_Header := mw_aVP_Header_any, aVP_Data := p_avpData Loading Loading @@ -981,12 +997,26 @@ module DiameterGx_Templates { granted_Service_Unit := mw_grantedServiceUnit_dummy } template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_Key_UsedServiceUnit (template Used_Service_Unit_AVP p_usedServiceUnit) modifies mw_usageMonitoringInfo_dummy := { aVP_Header := mw_aVP_Header_any, monitoring_Key := mw_monitoringKey_predefined, used_Service_Unit := p_usedServiceUnit } template Monitoring_Key_AVP mw_monitoringKey_any := { aVP_Header := mw_aVP_Header_any, aVP_Data := ? } template Monitoring_Key_AVP mw_monitoringKey_predefined := { aVP_Header := mw_aVP_Header_any, aVP_Data := PX_MONITORING_KEY } template Event_Trigger_AVP mw_eventTrigger(template Event_Trigger p_aVP_Data) := { aVP_Header := mw_aVP_Header_any, Loading Loading @@ -1081,6 +1111,19 @@ module DiameterGx_Templates { aVP_Data := p_avpData } template Used_Service_Unit_AVP mw_usedServiceUnit(template CC_Input_Octets_AVP p_CCInputOctets, template CC_Output_Octets_AVP p_CCOutputOctets) := { aVP_Header := mw_aVP_Header(c_vendIdCalled_Station_Id_AVP), tariff_Change_Usage := *, cC_Time := *, cC_Money := *, cC_Total_Octets := ?, cC_Input_Octets := *, cC_Output_Octets := *, cC_Service_Specific_Units := *, aVP_Type := * } }//end group awaitingTemplatesForAVPs } //end group SpecificAVPHeaders } //end group HeaderFieldTemplates Loading Loading @@ -1408,6 +1451,21 @@ module DiameterGx_Templates { } template RAR_MSG m_RAR_EvTrigger_UMI(template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, template Destination_Realm_AVP p_destinationRealm, template Destination_Host_AVP p_destinationHost, template Event_Trigger_AVP p_eventTrigger, template Usage_Monitoring_Information_AVP p_usageMonitoringInformation) modifies m_RAR_basic := { event_Trigger := {p_eventTrigger}, usage_Monitoring_Information := {p_usageMonitoringInformation} } template RAR_MSG m_RAR_CharRuleRemove(template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, Loading Loading @@ -1474,6 +1532,20 @@ module DiameterGx_Templates { qoS_Information := p_qoSInformation } template CCR_MSG mw_CCR_Request_EvtTrig_UMI(template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, template Destination_Realm_AVP p_destinationRealm, template CC_Request_Type_AVP p_cCRequestType, template Usage_Monitoring_Information_AVP p_usageMonitoringInformation, template Event_Trigger_AVP p_eventTrigger ) modifies mw_CCR_basic := { subscription_Id := {mw_subscription_Id(mw_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),mw_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))}, usage_Monitoring_Information := superset(p_usageMonitoringInformation), event_Trigger := superset(p_eventTrigger) } template CCR_MSG mw_CCR_AccessNetChargId(template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, Loading