Commit 4eb0aa92 authored by rennoch's avatar rennoch
Browse files

Gx tests: IRS_01, IRS_02, MPS_01

parent 710556b7
Loading
Loading
Loading
Loading
+88 −0
Original line number Diff line number Diff line
@@ -831,9 +831,97 @@ module DiameterGx_Gx_TCFunctions {

            } // end function f_TC_PCRF_UMC_01
        }//end group TP_PCRFRole_UMC
        
        group TP_PCRFRole_IRS {	//IMS Restoration Support

            /*
            *  @desc	This is the test case function TC_PCRF_IRS_01
            *  @param	
            */
            function f_TC_PCRF_IRS_01()
            runs on DiameterComponent {
                
                var boolean v_cc_xx_octets_present;
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//IUT install dynamic PCC rules,

                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost,
                												mw_chrgRuleInstall_Definition(mw_chrgRuleDefinition_flowInfoAfSigProt(mw_flowInformation_direction, ?))));
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_IRS_01
            
            
            /*
            *  @desc	This is the test case function TC_PCRF_IRS_02
            *  @param	
            */
            function f_TC_PCRF_IRS_02()
            runs on DiameterComponent {
                
                var boolean v_cc_xx_octets_present;
		
                f_preamble_PCEF();

                // RAR due to session opening
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost,
                												mw_chrgRuleInstall_Definition(mw_chrgRuleDefinition_flowInfoAfSigProt(mw_flowInformation_direction, ?)))); 
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
                // RAR due to session closing
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleRemove(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost,
                												mw_chrgRuleRemove_Name));
                												
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
                												                												                												                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_IRS_02  
                  
        }//end group TP_PCRFRole_IRS
        group TP_PCRFRole_MPS {	//Multimedia Priority Support
        
                    /*
            *  @desc	This is the test case function TC_PCRF_MPS_01
            *  @param	
            */
            function f_TC_PCRF_MPS_01()
            runs on DiameterComponent {
                
                var boolean v_cc_xx_octets_present;
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
                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_QosInfo(vc_sessionId, vc_originHost, vc_originRealm, {mw_qosInformation_QosInfo_ARP} ));
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_MPS_01
        
        }//end group TP_PCRFRole_MPS
        group TP_PCRFRole_SDC {	//Sponsored Data Connectivity
        }//end group TP_PCRFRole_SDC
+6 −0
Original line number Diff line number Diff line
@@ -258,6 +258,12 @@ module DiameterGx_PIXITS
        */
        modulepar Offline PX_OFFLINE_DATA := DISABLE_OFFLINE_E;  
        
        /** @desc	octectstring, PIXIT item A.1/
         * avp_Data within MPS_Identifier_AVP is of octectstring type
         * (parameter is part of AAR message)
        */
        modulepar octetstring PX_MPS_IDENTIFIER := '01020304050607'O; 
        
        /** @desc	enumerated type PCC_Rule_Status, PIXIT item A.1/
         * avp_Data within Online_AVP is of enumerated type Online
        */
+106 −3
Original line number Diff line number Diff line
@@ -8,15 +8,118 @@ module DiameterGx_Rx_TCFunctions {
	// LibCommon
	import from LibCommon_Sync {function f_selfOrClientSyncAndVerdict; 
	    						const c_prDone, c_tbDone, c_poDone;}
	// LibDiameter
	import from LibDiameter_TypesAndValues all;
	import from LibDiameter_Templates all;
    import from LibDiameter_Interface all;
	import from LibDiameter_Steps all;

	// DiameterRx
	import from DiameterRx_Templates all;
	import from DiameterRx_Steps all;
	import from DiameterGx_PIXITS all;
	

		// PCRF is TS and ports for Gx and Rx interface will be used

	group TP_B{
		//Used in case if PCRF is TS and ports for Gx and Rx interface will be used
	} //end group TP_B	
	
        group TP_PCRFRole {

            /*
            *  @desc	This is the test case function TC_PCRF_OpenSession
            *  @param	
            */
            function f_TC_PCRF_OpenSession()
            runs on DiameterComponent {
                
                var boolean v_cc_xx_octets_present;
		
                f_preamble_AF();
                
                f_send_AAR(m_AAR_basic(vc_sessionId, vc_originHost,
												   vc_originRealm,
												   vc_destinationRealm,
												   vc_destinationHost));                
                
                f_awaiting_AAA(mw_AAA_dummy); // IUT esthablish Diameter session
                		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_AF();

            } // end function f_TC_PCRF_OpenSession  
            
            /*
            *  @desc	This is the test case function TC_PCRF_OpemSession
            *  @param	
            */
            function f_TC_PCRF_OpenCloseSession()
            runs on DiameterComponent {
                
                var boolean v_cc_xx_octets_present;
		
                f_preamble_AF();
                
                // tester (AF role) intitiates esthablishment
                f_send_AAR(m_AAR_basic(vc_sessionId, vc_originHost,
												   vc_originRealm,
												   vc_destinationRealm,
												   vc_destinationHost));                
                
                f_awaiting_AAA(mw_AAA_dummy); // IUT esthablish Diameter session
                
                // tester (AF role) intitiates termination
				f_send_STR(m_STR_basic(vc_sessionId, vc_originHost, // Tester initiates termination
									   vc_originRealm, vc_destinationRealm,
									   m_terminationCause(DIAMETER_LOGOUT_E)));
                
                f_awaiting_STA(mw_STA_dummy);                
                
                		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_AF();

            } // end function f_TC_PCRF_OpenCloseSession  

            /*
            *  @desc	This is the test case function TC_PCRF_OpenSessionPrio
            *  @param	
            */
            function f_TC_PCRF_OpenSessionPrio()
            runs on DiameterComponent {
                
                var boolean v_cc_xx_octets_present;
		
                f_preamble_AF();
                
                f_send_AAR(m_AAR_Priority(vc_sessionId, vc_originHost,
												   vc_originRealm,
												   vc_destinationRealm,
												   vc_destinationHost,
												   m_mpsIdentifier(PX_MPS_IDENTIFIER),
												   m_reservationPriority(PRIORITY_ONE_E)));                
                
                f_awaiting_AAA(mw_AAA_dummy); // IUT esthablish Diameter session
                		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_AF();

            } // end function f_TC_PCRF_OpenSessionPrio  
                  
        }//end group TP_PCRFRole
	
} // end module DiameterGx_Rx_TCFunctions
 No newline at end of file
+36 −1
Original line number Diff line number Diff line
@@ -169,6 +169,20 @@ module DiameterGx_Templates {
                aVP_Type := *
            }
            
            template Flow_Information_AVP mw_flowInformation_dummy := {
				aVP_Header := mw_aVP_Header_any,
				flow_Description := *,
				packet_Filter_Identifier := *,
				packet_Filter_Usage := *,
				toS_Traffic_Class := *,
				security_Parameter_Index := *,
				flow_Label := *,
				flow_Direction := *,
				aVP_Type := *
			}


            
        } //end group DummyAVPHeaders
    
     	group SpecificAVPHeaders {
@@ -638,6 +652,13 @@ module DiameterGx_Templates {
                charging_Rule_Name := mw_chrgRuleName
            }       
   
            template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_flowInfoAfSigProt(template Flow_Information_AVP p_flowInfo, template AF_Signalling_Protocol_AVP p_AfSigProt) modifies mw_chrgRuleDefinition_dummy:=
            {
                aVP_Header := mw_aVP_Header_any,
                flow_Information := {p_flowInfo},
                aF_Signalling_Protocol := p_AfSigProt
            }  
               
            template Charging_Rule_Definition_AVP mw_chrgRuleDefinition_qosInfoNoBearerID modifies mw_chrgRuleDefinition_dummy:=
            {
                aVP_Header := mw_aVP_Header_any,
@@ -716,6 +737,11 @@ module DiameterGx_Templates {
                aVP_Data := p_aVP_Data
            }
            
                        
            template Flow_Information_AVP mw_flowInformation_direction modifies mw_flowInformation_dummy := {
				flow_Direction := ?
			}
            
     	  }//end group awaitingTemplatesForAVPs
        } //end group SpecificAVPHeaders
    } //end group HeaderFieldTemplates
@@ -1120,6 +1146,15 @@ module DiameterGx_Templates {
                  usage_Monitoring_Information := {mw_usageMonitoringInfo_Key_GrantedServiceUnit}
              }
              
                        
              template CCA_MSG mw_CCA_QosInfo( template Session_Id_AVP p_sessionId,
                                               template Origin_Host_AVP p_originHost,
                                               template Origin_Realm_AVP p_originRealm,
                                               template QoS_Information_AVP_setof p_qosInformation) modifies mw_CCA_basic := 
              {
                  qoS_Information := p_qosInformation
              }
          
          } // end group Gxmodified_answer_templates_receive
          
	  } //end group Gxmodified_templates
+71 −0
Original line number Diff line number Diff line
@@ -596,9 +596,80 @@ module DiameterGx_TestCases
        }//end group TP_PCRFRole_UMC
        
        group TP_PCRFRole_IRS {	//IMS Restoration Support
        
            /*
            * @desc TC_PCRF_IRS_01
            * @param p_cSeq_s Transaction Id
            */
            testcase TC_PCRF_IRS_01() 
            runs on ServerSyncComp
            system TestAdapter {
                //Variables
                var DiameterComponent v_diameterComponent_pcef;
                var DiameterComponent v_diameterComponent_af;
                f_cf_1Gx1RxUp(v_diameterComponent_pcef,v_diameterComponent_af);
		
                //Start
                v_diameterComponent_pcef.start(DiameterGx_Gx_TCFunctions.f_TC_PCRF_IRS_01());
                v_diameterComponent_af.start(DiameterGx_Rx_TCFunctions.f_TC_PCRF_OpenSession());
                
                // synchronize 2 PTCs on 3 sychronization points
                f_serverSync2Clients({c_prDone, c_tbDone, c_poDone});
		
                f_cf_1Gx1RxDown(v_diameterComponent_pcef,v_diameterComponent_af);
		
            } // end TC_PCRF_IRS_01
                        
            /*
            * @desc TC_PCRF_IRS_02
            * @param p_cSeq_s Transaction Id
            */
            testcase TC_PCRF_IRS_02() 
            runs on ServerSyncComp
            system TestAdapter {
                //Variables
                var DiameterComponent v_diameterComponent_pcef;
                var DiameterComponent v_diameterComponent_af;
                f_cf_1Gx1RxUp(v_diameterComponent_pcef,v_diameterComponent_af);
		
                //Start
                v_diameterComponent_pcef.start(DiameterGx_Gx_TCFunctions.f_TC_PCRF_IRS_02());
                v_diameterComponent_af.start(DiameterGx_Rx_TCFunctions.f_TC_PCRF_OpenCloseSession());
                
                // synchronize 2 PTCs on 3 sychronization points
                f_serverSync2Clients({c_prDone, c_tbDone, c_poDone});
		
                f_cf_1Gx1RxDown(v_diameterComponent_pcef,v_diameterComponent_af);
		
            } // end TC_PCRF_IRS_02    
        
        }//end group TP_PCRFRole_IRS
        
        group TP_PCRFRole_MPS {	//Multimedia Priority Support
        
                    /*
            * @desc TC_PCRF_MPS_01
            * @param p_cSeq_s Transaction Id
            */
            testcase TC_PCRF_MPS_01() 
            runs on ServerSyncComp
            system TestAdapter {
                //Variables
                var DiameterComponent v_diameterComponent_pcef;
                var DiameterComponent v_diameterComponent_af;
                f_cf_1Gx1RxUp(v_diameterComponent_pcef,v_diameterComponent_af);
		
                //Start
                v_diameterComponent_pcef.start(DiameterGx_Gx_TCFunctions.f_TC_PCRF_MPS_01());
                v_diameterComponent_af.start(DiameterGx_Rx_TCFunctions.f_TC_PCRF_OpenSessionPrio());
                
                // synchronize 2 PTCs on 3 sychronization points
                f_serverSync2Clients({c_prDone, c_tbDone, c_poDone});
		
                f_cf_1Gx1RxDown(v_diameterComponent_pcef,v_diameterComponent_af);
		
            } // end TC_PCRF_MPS_01
            
        }//end group TP_PCRFRole_MPS
        
        group TP_PCRFRole_SDC {	//Sponsored Data Connectivity
Loading