Skip to content
DiameterGx_Gx_TCFunctions.ttcn 118 KiB
Newer Older
/**
 *	@author 	STF 443
pintar's avatar
pintar committed
 *  @version    $Id$
 *	@desc		This module provides GX test functions used by the test cases
 *              for IMS-DIAMETER tests.
 */
module DiameterGx_Gx_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;
	
	//DiameterGx
	import from DiameterGx_PIXITS all;
	import from DiameterGx_Templates all;
	import from DiameterGx_Steps all;
rennoch's avatar
rennoch committed
	//DiameterRx
	import from DiameterRx_Templates all;
rennoch's avatar
rennoch committed
    // GPRS tunneling protocol 
    import from LibGtp_TypesAndValues all;
    import from LibGtp_Templates all;
    import from LibGtp_Steps all;
    import from LibGtp_Interface all;
	group TP_PCRFRole{        
	    group TP_PCRFRole_IPS {	//Initial Provisioning Session
            /*
            *  @desc	This is the test case function TC_PCRF_IPS_01
            *  @param	
            */
            function f_TC_PCRF_IPS_01()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
		
pintar's avatar
pintar committed
                f_send_CCR(m_CCR_InitialRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send()));
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
		
pintar's avatar
pintar committed
                f_awaiting_CCA(mw_CCA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
		
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();
            } // end function f_TC_PCRF_IPS_01

            /*
            *  @desc	This is the test case function TC_PCRF_IPS_02
            *  @param	
            */
            function f_TC_PCRF_IPS_02()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
		
pintar's avatar
pintar committed
                f_send_CCR(m_CCR_InitialRequest_allReqAVPs(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send()));
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
		
rennoch's avatar
rennoch committed
                f_awaiting_CCA(mw_CCA_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, ?));
            
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_IPS_02
pintar's avatar
pintar committed

            /*
            *  @desc	This is the test case function TC_PCRF_IPS_03
            *  @param	
            */
            function f_TC_PCRF_IPS_03()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
		
pintar's avatar
pintar committed
                f_send_CCR(m_CCR_InitialRequest_NetworkRequestSupport(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
pintar's avatar
pintar committed
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
		
pintar's avatar
pintar committed
                f_awaiting_CCA(mw_CCA_ResultCode_BearerControlMode(vc_sessionId, vc_originHost, vc_originRealm, 
                													mw_resultCode(mw_resultCode_diameterSuccess),
                													mw_bearerControlMode(UE_NW_E)));
pintar's avatar
pintar committed
            
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_IPS_03
            
        }//end group TP_PCRFRole_IPS
        group TP_PCRFRole_MSI {	//Modification of Session Information
pintar's avatar
pintar committed

            /*
            *  @desc	This is the test case function TC_PCRF_MSI_01
            *  @param	
            */
            function f_TC_PCRF_MSI_01()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
pintar's avatar
pintar committed
                f_send_CCR(m_CCR_InitialRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send()));
pintar's avatar
pintar committed
                f_awaiting_CCA(mw_CCA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //session modification
pintar's avatar
pintar committed
				f_send_CCR(m_CCR_UpdateRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
pintar's avatar
pintar committed
                f_awaiting_CCA(mw_CCA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
		
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_MSI_01
pintar's avatar
pintar committed

            /*
            *  @desc	This is the test case function TC_PCRF_MSI_02
            *  @param	
            */
            function f_TC_PCRF_MSI_02()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //session modification
				f_send_CCR(m_CCR_UpdateRequest_allReqAVPs(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
rennoch's avatar
rennoch committed
                f_awaiting_CCA(mw_CCA_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, ?));
pintar's avatar
pintar committed
		
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_MSI_02

            /*
            *  @desc	This is the test case function TC_PCRF_MSI_03
            *  @param	
            */
            function f_TC_PCRF_MSI_03()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //session modification
				f_send_CCR(m_CCR_UpdateRequest_UERequestForAllocResources(
								vc_sessionId,
								vc_originHost, 
								vc_originRealm, 
								vc_destinationRealm,
								m_pFInfo_Precedence_pFContent(m_precedence(PX_PRECEDENCE_DATA),m_packet_Filter_Content(m_iPFilterRule)),
								m_packet_Filter_Operation(ADDITION_E),
								m_qoS_Information_ClassIdentifier(QCI_1_E)								
								));
rennoch's avatar
rennoch committed
                f_awaiting_CCA(mw_CCA_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, ?));
pintar's avatar
pintar committed
		
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_MSI_03

            /*
            *  @desc	This is the test case function TC_PCRF_MSI_04
            *  @param	
            */
            function f_TC_PCRF_MSI_04()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //session modification
				f_send_CCR(m_CCR_UpdateRequest_UERequestForAllocResources(
								vc_sessionId,
								vc_originHost, 
								vc_originRealm, 
								vc_destinationRealm,
								m_pFInfo_PacketFilterId_FlowDirection(m_packet_Filter_Identifier(PX_PACKET_FILTER_IDENTIFIER_DATA)),
								m_packet_Filter_Operation(MODIFICATION_E),
								omit								
								));
rennoch's avatar
rennoch committed
                f_awaiting_CCA(mw_CCA_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, ?));
pintar's avatar
pintar committed
		
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_MSI_04

            /*
            *  @desc	This is the test case function TC_PCRF_MSI_05
            *  @param	
            */
            function f_TC_PCRF_MSI_05()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //session modification
				f_send_CCR(m_CCR_UpdateRequest_UERequestForAllocResources(
								vc_sessionId,
								vc_originHost, 
								vc_originRealm, 
								vc_destinationRealm,
								m_pFInfo_PacketFilterId(m_packet_Filter_Identifier(PX_PACKET_FILTER_IDENTIFIER_DATA)),
								m_packet_Filter_Operation(DELETION_E),
								omit								
								));
rennoch's avatar
rennoch committed
                f_awaiting_CCA(mw_CCA_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, ?));
pintar's avatar
pintar committed
		
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_MSI_05

            /*
            *  @desc	This is the test case function TC_PCRF_MSI_06
            *  @param	
            */
            function f_TC_PCRF_MSI_06()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //session modification
				f_send_CCR(m_CCR_UpdateRequest_NetworkRequestSupport(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
rennoch's avatar
rennoch committed
				f_awaiting_CCA(mw_CCA_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, ?));
pintar's avatar
pintar committed
		
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_MSI_06
pintar's avatar
pintar committed
            
        }//end group  TP_PCRFRole_MSI
        group TP_PCRFRole_INV {	//Invalid Behaviour 
pintar's avatar
pintar committed

            /*
            *  @desc	This is the test case function TC_PCRF_INV_01
            *  @param	
            */
            function f_TC_PCRF_INV_01()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //session modification
				f_send_CCR(m_CCR_UpdateRequest_Invalid(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
rennoch's avatar
rennoch committed
                f_awaiting_CCA(mw_CCA_ExperimentalResult(vc_sessionId, vc_originHost, vc_originRealm, mw_experimentalResult(mw_expResultCode(DIAMETER_ERROR_TRAFFIC_MAPPING_INFO_REJECTED_E))));
pintar's avatar
pintar committed
		
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_INV_01

            /*
            *  @desc	This is the test case function TC_PCRF_INV_02
            *  @param	
            */
            function f_TC_PCRF_INV_02()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                f_send_CCR(m_CCR_InitialRequest_Invalid(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send()));
rennoch's avatar
rennoch committed
                f_awaiting_CCA(mw_CCA_ExperimentalResult(vc_sessionId, vc_originHost, vc_originRealm, mw_experimentalResult(mw_expResultCode(DIAMETER_ERROR_TRAFFIC_MAPPING_INFO_REJECTED_E))));
pintar's avatar
pintar committed
		
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_INV_02
            
        }//end group TP_PCRFRole_INV
        group TP_PCRFRole_ST {	//Session Termination
pintar's avatar
pintar committed

            /*
            *  @desc	This is the test case function TC_PCRF_ST_01
            *  @param	
            */
            function f_TC_PCRF_ST_01()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //IP CAN termination
				f_send_CCR(m_CCR_UpdateRequest_IPcanTermination(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
		
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_ST_01

            /*
            *  @desc	This is the test case function TC_PCRF_ST_02
            *  @param	
            */
            function f_TC_PCRF_ST_02()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //session termination
				f_send_CCR(m_CCR_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
		
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_ST_02

            /*
            *  @desc	This is the test case function TC_PCRF_ST_03
            *  @param	
            */
            function f_TC_PCRF_ST_03()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //termination of IPCAN session due to an internal SPR trigger
                f_awaiting_RAR(mw_RAR_sessReleaseCause(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost));
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
                
                //session termination
				f_send_CCR(m_CCR_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
		
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_ST_03
            
        }//end group  TP_PCRFRole_ST
        group TP_PCRFRole_PCC {	//PCC rules
pintar's avatar
pintar committed

            /*
            *  @desc	This is the test case function TC_PCRF_PCC_01
            *  @param	
            */
            function f_TC_PCRF_PCC_01()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //activation of PCC rule
pintar's avatar
pintar committed
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost, 
                												mw_chrgRuleInstall_Name));
pintar's avatar
pintar committed
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
		        
                //postamble
                //session termination
				f_send_CCR(m_CCR_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_PCC_01

            /*
            *  @desc	This is the test case function TC_PCRF_PCC_02
            *  @param	
            */
            function f_TC_PCRF_PCC_02()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //activation of PCC rule
pintar's avatar
pintar committed
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost, 
                												mw_chrgRuleInstall_Name));
pintar's avatar
pintar committed
        		f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
                
                //deactivation of PCC rule
pintar's avatar
pintar committed
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleRemove(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost,
                											mw_chrgRuleRemove_Name));
pintar's avatar
pintar committed
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
		        
                //postamble
                //session termination
				f_send_CCR(m_CCR_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_PCC_02

            /*
            *  @desc	This is the test case function TC_PCRF_PCC_03
            *  @param	
            */
            function f_TC_PCRF_PCC_03()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //activation of PCC rules
pintar's avatar
pintar committed
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost,
                												mw_chrgRuleInstall_BaseName));
pintar's avatar
pintar committed
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
		        
                //postamble
                //session termination
				f_send_CCR(m_CCR_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_PCC_03
pintar's avatar
pintar committed

            /*
            *  @desc	This is the test case function TC_PCRF_PCC_04
            *  @param	
            */
            function f_TC_PCRF_PCC_04()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //request confirmation of resource allocation for PCC rule
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleInstall_EventTrigger(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost,
                															 mw_chrgRuleInstall_Name_resAllocNotif));
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
		        
                //postamble
                //session termination
				f_send_CCR(m_CCR_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_PCC_04

            /*
            *  @desc	This is the test case function TC_PCRF_PCC_05
            *  @param	
            */
            function f_TC_PCRF_PCC_05()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //modification of PCC rule
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost,
pintar's avatar
pintar committed
                												mw_chrgRuleInstall_Definition(mw_chrgRuleDefinition)));
pintar's avatar
pintar committed
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
		        
                //postamble
                //session termination
				f_send_CCR(m_CCR_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_PCC_05

            /*
            *  @desc	This is the test case function TC_PCRF_PCC_06
            *  @param	
            */
            function f_TC_PCRF_PCC_06()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //remove PCC rule
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleRemove(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost,
                												mw_chrgRuleRemove_Name));
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
		        
                //postamble
                //session termination
				f_send_CCR(m_CCR_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_PCC_06

            /*
            *  @desc	This is the test case function TC_PCRF_PCC_07
            *  @param	
            */
            function f_TC_PCRF_PCC_07()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //remove group of PCC rules
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleRemove(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost,
                												mw_chrgRuleRemove_BaseName));
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
		        
                //postamble
                //session termination
				f_send_CCR(m_CCR_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_PCC_07
pintar's avatar
pintar committed

            /*
            *  @desc	This is the test case function TC_PCRF_PCC_08
            *  @param	
            */
            function f_TC_PCRF_PCC_08()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                f_send_CCR(m_CCR_InitialRequest_OnlineOffline(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send()));
                f_awaiting_CCA(mw_CCA_ResultCode_OnlineOffline(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_PCC_08

            /*
            *  @desc	This is the test case function TC_PCRF_PCC_09
            *  @param	
            */
            function f_TC_PCRF_PCC_09()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //remove group of PCC rules
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost,
                												mw_chrgRuleInstall_Definition(mw_chrgRuleDefinition_qosInfoNoBearerID)));
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
		        
                //postamble
                //session termination
				f_send_CCR(m_CCR_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_PCC_09
        }//end group TP_PCRFRole_PCC
        group TP_PCRFRole_EMS {	//Emergency services
pintar's avatar
pintar committed

            /*
            *  @desc	This is the test case function TC_PCRF_EMS_01
            *  @param	
            */
            function f_TC_PCRF_EMS_01()
            runs on DiameterComponent {
		
                f_preamble_PCEF();
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
                
                //remove group of PCC rules
                f_awaiting_RAR(mw_RAR_PCCrules_ChrgRuleInstall(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, vc_destinationHost,
                												mw_chrgRuleInstall_Definition(mw_chrgRuleDefinition_qosInfo_AllocRetPrio)));
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));
		        
                //postamble
                //session termination
				f_send_CCR(m_CCR_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_basic(vc_sessionId, vc_originHost, vc_originRealm));
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_EMS_01

            /*
            *  @desc	This is the test case function TC_PCRF_EMS_02
            *  @param	
            */
            function f_TC_PCRF_EMS_02()
            runs on DiameterComponent {
		
                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_CalledStationId(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send()));
                f_awaiting_CCA(mw_CCA_ResultCode_BearerControlMode(vc_sessionId, vc_originHost, vc_originRealm, 
                													mw_resultCode(mw_resultCode_diameterSuccess),
                													mw_bearerControlMode(?)));
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
                f_postamble_PCEF();

            } // end function f_TC_PCRF_EMS_02
        
        }//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

            /*
            *  @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();
                
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
		
                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();
                
                //establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));                

                // 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
rennoch's avatar
rennoch committed
            /*
            *  @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
rennoch's avatar
rennoch committed
            
                    
            /*
            *  @desc	This is the test case function TC_PCRF_MPS_02
            *  @param	
            */
            function f_TC_PCRF_MPS_02()
            runs on DiameterComponent {
                
                var boolean v_cc_xx_octets_present;
		
                f_preamble_PCEF();
                
                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_prDone, f_getVerdict()); // sync
						
                f_awaiting_RAR(mw_RAR_QosInfo(vc_sessionId, vc_originHost, vc_originRealm, 
                              vc_destinationRealm, vc_destinationHost, {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_02
        }//end group TP_PCRFRole_MPS
        group TP_PCRFRole_SDC {	//Sponsored Data Connectivity
rennoch's avatar
rennoch committed
        
            /*
            *  @desc	This is the test case function TC_PCRF_SDC_01
            *  @param	
            */
            function f_TC_PCRF_SDC_01()
            runs on DiameterComponent {
                
                var boolean v_cc_xx_octets_present;
		
                f_preamble_PCEF();
                
				//establishement of the session
                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_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, mw_resultCode(mw_resultCode_diameterSuccess)));
		
                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_sponConn(?, ?, mw_reportingLevel(SPONSORED_CONNECTIVITY_LEVEL_E)))));
                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_SDC_01

            /*
            *  @desc	This is the test case function TC_PCRF_SDC_02
            *  @param