Commit 402ffde7 authored by rennoch's avatar rennoch
Browse files

Gx/PCEF test: RAU_01

parent e69e3dbd
Loading
Loading
Loading
Loading
+97 −0
Original line number Diff line number Diff line
@@ -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, 
@@ -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
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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;
        
+75 −3
Original line number Diff line number Diff line
@@ -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{
    
@@ -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
@@ -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,
@@ -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
@@ -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,
@@ -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,