Commit 710556b7 authored by pintar's avatar pintar
Browse files

New Test added and related templates and functions

parent 629061d9
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -796,6 +796,40 @@ module DiameterGx_Gx_TCFunctions {
        
        }//end group TP_PCRFRole_EMS
        group TP_PCRFRole_UMC {	//Usage monitoring control

            /*
            *  @desc	This is the test case function TC_PCRF_UMC_01
            *  @param	
            */
            function f_TC_PCRF_UMC_01()
            runs on DiameterComponent {
                
                var boolean v_cc_xx_octets_present;
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session with Called-Station-Id: set value emergency APN with PX_CALLED_STATION_ID_DATA
                f_send_CCR(m_CCR_InitialRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send()));
                f_awaiting_CCA(mw_CCA_EventTriger_UsageMonitorInfo(vc_sessionId, vc_originHost, vc_originRealm,
                													mw_resultCode(mw_resultCode_diameterSuccess)));
                v_cc_xx_octets_present := f_check_CCAUsageMonitoringInfo(vc_recvDiamMsg);
                if (not v_cc_xx_octets_present) 
                {
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                    setverdict(fail);
                    f_postamble_PCEF();    
                }
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_UMC_01
        }//end group TP_PCRFRole_UMC
        group TP_PCRFRole_IRS {	//IMS Restoration Support
        }//end group TP_PCRFRole_IRS
+39 −0
Original line number Diff line number Diff line
@@ -136,6 +136,45 @@
        
    }//end group AVPOperations
    
    group CheckFunctions {
        
        function f_check_CCAUsageMonitoringInfo (DIAMETER_MSG p_msg)
             return boolean
        {
            var integer v_umi:=0, i:=0;
            var boolean v_present :=false;
            
            if (ispresent(p_msg.cCA_MSG.usage_Monitoring_Information)) {
                v_umi := sizeof(p_msg.cCA_MSG.usage_Monitoring_Information);
                
                for (i :=0;  i < v_umi; i := i+1)
                {
                    if (ispresent(p_msg.cCA_MSG.usage_Monitoring_Information[i].granted_Service_Unit)){
                    	if (ispresent(p_msg.cCA_MSG.usage_Monitoring_Information[i].granted_Service_Unit.cC_Total_Octets)
                           or ispresent(p_msg.cCA_MSG.usage_Monitoring_Information[i].granted_Service_Unit.cC_Input_Octets)
                           or ispresent(p_msg.cCA_MSG.usage_Monitoring_Information[i].granted_Service_Unit.cC_Output_Octets))
                         {
                         	v_present :=true; 
                         }
                         else 
                         {
                            log("FAIL: CC_Total_Octets_AVP or CC_Input_Octets_AVP or CC_Output_Octets_AVP shall be present");
                            return(false);
                         }
                    }
                    else 
                    {
                        log("FAIL: Granted_Service_Unit_AVP shall be present");
                        return(false);
                    }
                }
            }
            
            return(v_present);
        }
    
    } //end group CheckFunctions
             
    group DefaultAltsteps {
    
    	
+53 −0
Original line number Diff line number Diff line
@@ -144,6 +144,31 @@ module DiameterGx_Templates {
                pre_emption_Vulnerability := *
            }     
                
            template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_dummy :=
            {
                aVP_Header := mw_aVP_Header_any,
                monitoring_Key := *,
                granted_Service_Unit := *,
                used_Service_Unit := *,
                usage_Monitoring_Level := *,
                usage_Monitoring_Report := *,
                usage_Monitoring_Support := *,
                aVP_Type := *
            }     
                
            template Granted_Service_Unit_AVP mw_grantedServiceUnit_dummy :=
            {
                aVP_Header := mw_aVP_Header_any,
                tariff_Time_Change := *,
                cC_Time := *,
                cC_Money := *,
                cC_Total_Octets := *,
                cC_Input_Octets := *,
                cC_Output_Octets := *,
                cC_Service_Specific_Units := *,
                aVP_Type := *
            }
            
        } //end group DummyAVPHeaders
    
     	group SpecificAVPHeaders {
@@ -672,6 +697,25 @@ module DiameterGx_Templates {
                aVP_Data := p_aVP_Data
            }     
                
            template Usage_Monitoring_Information_AVP mw_usageMonitoringInfo_Key_GrantedServiceUnit modifies mw_usageMonitoringInfo_dummy :=
            {
                aVP_Header := mw_aVP_Header_any,
                monitoring_Key := mw_monitoringKey_any,
                granted_Service_Unit := mw_grantedServiceUnit_dummy
            } 
                
            template Monitoring_Key_AVP mw_monitoringKey_any :=
            {
                aVP_Header := mw_aVP_Header_any,
                aVP_Data := ?
            }  
                
            template Event_Trigger_AVP mw_eventTrigger(template Event_Trigger p_aVP_Data) :=
            {
                aVP_Header := mw_aVP_Header_any,
                aVP_Data := p_aVP_Data
            }
            
     	  }//end group awaitingTemplatesForAVPs
        } //end group SpecificAVPHeaders
    } //end group HeaderFieldTemplates
@@ -1067,6 +1111,15 @@ module DiameterGx_Templates {
                  offline := mw_offline_any ifpresent
              }
          
              template CCA_MSG mw_CCA_EventTriger_UsageMonitorInfo( template Session_Id_AVP p_sessionId,
                                                           template Origin_Host_AVP p_originHost,
                                                           template Origin_Realm_AVP p_originRealm,
                                                           template Result_Code_AVP p_resultCode) modifies mw_CCA_basic := 
              {
                  event_Trigger := {mw_eventTrigger(USAGE_REPORT_E)},
                  usage_Monitoring_Information := {mw_usageMonitoringInfo_Key_GrantedServiceUnit}
              }
          
          } // end group Gxmodified_answer_templates_receive
          
	  } //end group Gxmodified_templates
+21 −0
Original line number Diff line number Diff line
@@ -572,6 +572,27 @@ module DiameterGx_TestCases
        }//end group TP_PCRFRole_EMS
        
        group TP_PCRFRole_UMC {	//Usage monitoring control
            
            /*
            * @desc TC_PCRF_UMC_01
            * @param p_cSeq_s Transaction Id
            */
            testcase TC_PCRF_UMC_01() 
            runs on ServerSyncComp
            system TestAdapter {
                //Variables
                var DiameterComponent v_diameterComponent_pcef;
                f_cf_1GxEUp(v_diameterComponent_pcef);
		
                //Start
                v_diameterComponent_pcef.start(f_TC_PCRF_UMC_01());
                
                // synchronize PTC on 3 sychronization points
                f_serverSync1Client({c_prDone, c_tbDone, c_poDone});
		
                f_cf_1GxEDown(v_diameterComponent_pcef);
		
            } // end TC_PCRF_UMC_01
        }//end group TP_PCRFRole_UMC
        
        group TP_PCRFRole_IRS {	//IMS Restoration Support