Commit 6e524abf authored by rennoch's avatar rennoch
Browse files

additions for VMB, VDS, VSL and VIF test groups

parent bdd0f5de
Loading
Loading
Loading
Loading
+313 −2
Original line number Diff line number Diff line
@@ -2583,7 +2583,7 @@ module DiameterS9_S9_TCFunctions {
        group TP_VPCRFRole_VST{

            /*
            *  @desc    This is the test case function f_TC_VPCRF_VSM_01
            *  @desc    This is the test case function f_TC_VPCRF_VST_01
            *  @param
            */
            function f_TC_VPCRF_VST_01()
@@ -2651,7 +2651,7 @@ module DiameterS9_S9_TCFunctions {
            } // end function f_TC_VPCRF_VST_02

            /*
            *  @desc    This is the test case function f_TC_VPCRF_VSM_03
            *  @desc    This is the test case function f_TC_VPCRF_VST_03
            *  @param
            */
            function f_TC_VPCRF_VST_03()
@@ -2768,6 +2768,317 @@ module DiameterS9_S9_TCFunctions {
            } // end function f_TC_VPCRF_VST_05
        }// end group TP_VPCRFRole_VST

        group TP_VPCRFRole_VMB {

            /*
            *  @desc    This is the test case function f_TC_VPCRF_VMB_01
            *  @param
            */
            function f_TC_VPCRF_VMB_01()
            runs on DiameterComponent {

                f_preamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_await_initial_session_send_response_HPCRF();

                f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); // sync

                f_awaiting_CCR(mw_CCR_chrgRuleReport_EvTri_AnGw(?,
                                                          vc_originHost,
                                                          vc_originRealm,
                                                          vc_destinationRealm,
                                                          mw_cC_Request_Type(UPDATE_REQUEST_E),
                										  *,//Subscription id
                                                          {mw_chargRuleReport_Name({mw_chrgRuleName})},
                                                          {mw_event_Trigger(IP_CAN_CHANGE_E)},
                                                          {mw_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))}
                                                          ));

                f_send_CCA(m_CCA_basic(vc_sessionId,
                                       vc_originHost,
                                       vc_originRealm,
                                       m_cC_Request_Type(UPDATE_REQUEST_E),
                                       m_resultCode(m_resultCode_diameterSuccess)));

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                f_await_session_termination_HPCRF(); // postamble

                f_postamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

            } // end function f_TC_VPCRF_VMB_01

            /*
            *  @desc    This is the test case function f_TC_VPCRF_VMB_02
            *  @param
            */
            function f_TC_VPCRF_VMB_02()
            runs on DiameterComponent {

                f_preamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_await_initial_session_send_response_HPCRF();

                f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); // sync

                f_awaiting_CCR(mw_CCR_chrgRuleReport_EvTri_IpCan_Rat(?,
                                                          vc_originHost,
                                                          vc_originRealm,
                                                          vc_destinationRealm,
                                                          mw_cC_Request_Type(UPDATE_REQUEST_E),
                                                          *,//Subscription id
                                                          {mw_chargRuleReport_Name({mw_chrgRuleName})},
                                                          {mw_event_Trigger(IP_CAN_CHANGE_E)},
                										  mw_iP_CAN_Type(?),
                										  mw_rAT_Type(?)
                                                          ));

                f_send_CCA(m_CCA_basic(vc_sessionId,
                                       vc_originHost,
                                       vc_originRealm,
                                       m_cC_Request_Type(UPDATE_REQUEST_E),
                                       m_resultCode(m_resultCode_diameterSuccess)));

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                f_await_session_termination_HPCRF(); // postamble

                f_postamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

            } // end function f_TC_VPCRF_VMB_02                       
        } //end group TP_VPCRFRole_VMB
        
        group TP_VPCRFRole_VDS {

            /*
            *  @desc    This is the test case function f_TC_VPCRF_VDS_01
            *  @param
            */
            function f_TC_VPCRF_VDS_01()
            runs on DiameterComponent {

                f_preamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_await_initial_session_send_response_HPCRF();

                f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); // sync

				// Ensure that no CCR has been sent
                tc_delay.start;
                tc_delay.timeout; 

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                // no session termination

                f_postamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

            } // end function f_TC_VPCRF_VDS_01

            /*
            *  @desc    This is the test case function f_TC_VPCRF_VDS_02
            *  @param
            */
            function f_TC_VPCRF_VDS_02()
            runs on DiameterComponent {
				
				var template Subsession_Id_AVP v_subSessionId;
				
                f_preamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_await_initial_session_send_response_HPCRF();
				if (ispresent(vc_recvDiamMsg.cCR_MSG.cCR_Body.subsesion_Enforcement_Info)) {
        			v_subSessionId := vc_recvDiamMsg.cCR_MSG.cCR_Body.subsesion_Enforcement_Info[0].subsession_Id;
                } else {setverdict(fail); v_subSessionId := mw_subsessionId_dummy(?)};
                
                //CCR UPDATE REQUEST
                f_awaiting_CCR(mw_CCR_SubSessEnfInf_QoS(?,
                                                        vc_originHost,
                                                        vc_originRealm,
                                                        vc_destinationRealm,
                                                        mw_cC_Request_Type(UPDATE_REQUEST_E),
                                                        *,//Subscription id
                                                        {mw_subsesEnforcementInfo_Operation(v_subSessionId, //mw_subsessionId_dummy(?),
                                                                                            mw_subsessionOperation_dummy(Subsession_Operation_Code:MODIFICATION_E),
                                                                                            *//qoS_Rule_Report
                                                                                           )},
                                                        *,//QoS_Rule_Report 
                                                        *//QoS_information
                                                        ));

                f_send_CCA(m_CCA_basic(vc_sessionId,
                                       vc_originHost,
                                       vc_originRealm,
                                       m_cC_Request_Type(UPDATE_REQUEST_E),
                                       m_resultCode(m_resultCode_diameterSuccess)));

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                f_await_session_termination_HPCRF(); // postamble for termination of the rest of the subsessions 

                f_postamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

            } // end function f_TC_VPCRF_VDS_02

            /*
            *  @desc    This is the test case function f_TC_VPCRF_VDS_03
            *  @param
            */
            function f_TC_VPCRF_VDS_03()
            runs on DiameterComponent {
				
                var template Subsession_Id_AVP v_subSessionId;
				
                f_preamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                
                //CCR INITIAL REQUEST
                f_awaiting_CCR(mw_CCR_SubSessEnfInf_QoS(?,
                                                        vc_originHost,
                                                        vc_originRealm,
                                                        vc_destinationRealm,
                                                        mw_cC_Request_Type(INITIAL_REQUEST_E),
                                                        *,//Subscription id
                                                        {mw_subsesEnforcementInfo_Operation(mw_subsessionId_dummy(?),
                                                                                            mw_subsessionOperation_dummy(Subsession_Operation_Code:ESTABLISHMENT_E),
                                                                                            *//qoS_Rule_Report
                                                                                           )},
                                                        *,//QoS_Rule_Report 
                                                        *//QoS_information
                                                        ));

                f_send_CCA(m_CCA_basic(vc_sessionId,
                                       vc_originHost,
                                       vc_originRealm,
                                       m_cC_Request_Type(INITIAL_REQUEST_E),
                                       m_resultCode(m_resultCode_diameterSuccess)));

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                f_await_session_termination_HPCRF(); // postamble for termination of the rest of the subsessions 

                f_postamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

            } // end function f_TC_VPCRF_VDS_03
                                                
        } //end group TP_VPCRFRole_VDS
        
        group TP_VPCRFRole_VSL {

            /*
            *  @desc    This is the test case function f_TC_VPCRF_VSL_01
            *  @param
            */
            function f_TC_VPCRF_VSL_01()
            runs on DiameterComponent {
				
                var template Subsession_Id_AVP v_subSessionId;
				
                f_preamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                
                //CCR INITIAL REQUEST
                f_awaiting_CCR(mw_CCR_SubSessEnfInf_QoS(?,
                                                        vc_originHost,
                                                        vc_originRealm,
                                                        vc_destinationRealm,
                                                        mw_cC_Request_Type(INITIAL_REQUEST_E),
                                                        *,//Subscription id
                                                        {mw_subsesEnforcementInfo_Operation_PDNConn_CalledStationId(mw_subsessionId_dummy(?),
                                                                                            mw_subsessionOperation_dummy(Subsession_Operation_Code:ESTABLISHMENT_E),
                                                                                            *,//called_Station_Id
                                                                                            omit
                                                                                           )},
                                                        *,//QoS_Rule_Report 
                                                        *//QoS_information
                                                        ));

                f_send_CCA(m_CCA_basic(vc_sessionId,
                                       vc_originHost,
                                       vc_originRealm,
                                       m_cC_Request_Type(INITIAL_REQUEST_E),
                                       m_resultCode(m_resultCode_diameterSuccess)));

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                f_await_session_termination_HPCRF(); // postamble for termination of the rest of the subsessions 

                f_postamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

            } // end function f_TC_VPCRF_VSL_01
                                                
        } //end group TP_VPCRFRole_VSL
        
        group TP_VPCRFRole_VIF {            

            /*
            *  @desc    This is the test case function f_TC_VPCRF_VIF_01
            *  @param
            */
            function f_TC_VPCRF_VIF_01()
            runs on DiameterComponent {
				
                var template Subsession_Id_AVP v_subSessionId;
				
                f_preamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                
                //CCR INITIAL REQUEST
                f_awaiting_CCR(mw_CCR_SubSessEnfInf_QoS(?,
                                                        vc_originHost,
                                                        vc_originRealm,
                                                        vc_destinationRealm,
                                                        mw_cC_Request_Type(INITIAL_REQUEST_E),
                                                        *,//Subscription id
                                                        {mw_subsesEnforcementInfo_Operation_RRinstall(mw_subsessionId_dummy(?),
                                                                                            mw_subsessionOperation_dummy(Subsession_Operation_Code:ESTABLISHMENT_E),
                                                                                            ? //RoutingRuleInstall
                                                                                           )},
                                                        *,//QoS_Rule_Report 
                                                        *//QoS_information
                                                        ));

                f_send_CCA(m_CCA_basic(vc_sessionId,
                                       vc_originHost,
                                       vc_originRealm,
                                       m_cC_Request_Type(INITIAL_REQUEST_E),
                                       m_resultCode(m_resultCode_diameterSuccess)));

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                f_await_session_termination_HPCRF(); // postamble for termination of the rest of the subsessions 

                f_postamble_HPCRF();

                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

            } // end function f_TC_VPCRF_VIF_01
                                    
        } //end group TP_VPCRFRole_VIF

    } // group TP_VPCRFRole    
    
}// end module DiameterS9_S9_TCFunctions
 No newline at end of file
+67 −0
Original line number Diff line number Diff line
@@ -910,6 +910,15 @@ module DiameterS9_Templates {
                    pDN_Connection_ID    := p_pDN_Connection_ID
                }

                template Subses_Enforcement_Info_AVP mw_subsesEnforcementInfo_Operation_RRinstall  
                    (template (present) Subsession_Id_AVP p_subsessionId,
                     template Subsession_Operation_AVP p_subsessionOperation ,
                     template Subses_Enforcement_Info_AVP.routing_Rule_Install p_routingRuleInstall ) 
                modifies mw_subsesEnforcementInfo_dummy:= {
                    subsession_Operation	:= p_subsessionOperation,
                    routing_Rule_Install	:= p_routingRuleInstall
                }

                template Subses_Enforcement_Info_AVP mw_subsesEnforcementInfo_qosInfo  
                    (template (present) Subsession_Id_AVP p_subsessionId,
                     template Subses_Enforcement_Info_AVP.qoS_Information p_qoS_Information,
@@ -967,6 +976,25 @@ module DiameterS9_Templates {
                    aVP_Header := mw_aVP_Header_VMbit1(c_charging_Rule_Name_AVP_Code),
                    aVP_Data := ? //or PX_CHARGING_RULE_NAME_DATA
                }
                
                template Event_Trigger_AVP mw_event_Trigger(template Event_Trigger p_avpData) :=
                {
                    aVP_Header := mw_aVP_Header_VMbit1(c_event_Trigger_AVP_Code),
                    aVP_Data := p_avpData
                }
                
                template IP_CAN_Type_AVP mw_iP_CAN_Type(template IP_CAN_Type p_avpData):=
                {
                    aVP_Header := mw_aVP_Header_VMbit1(c_iP_CAN_Type_AVP_Code),
                    aVP_Data := p_avpData
                }

                template RAT_Type_AVP mw_rAT_Type(template RAT_Type p_avpData):=
                {
                    aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_rAT_Type_AVP_Code),
                    aVP_Data := p_avpData
                }
                
			}//end group awaitingTemplatesForAVPs
        } //end group SpecificAVPHeaders
    } //end group HeaderFieldTemplates
@@ -1547,6 +1575,45 @@ module DiameterS9_Templates {
                    }
                }
                
                template CCR_MSG mw_CCR_chrgRuleReport_EvTri_AnGw (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 CCR_MSG.cCR_Body.subscription_Id p_subscriptionId,
                							   template CCR_MSG.cCR_Body.charging_Rule_Report p_charging_Rule_Report,
                							   template CCR_MSG.cCR_Body.event_Trigger p_event_Trigger,
                                               template CCR_MSG.cCR_Body.aN_GW_Address p_anGwAddress) 
                modifies mw_CCR_basic := {
                    cCR_Body := {
                        subscription_Id       := p_subscriptionId,
                        charging_Rule_Report  := p_charging_Rule_Report,
                        event_Trigger         := p_event_Trigger,
                        aN_GW_Address		  := p_anGwAddress
                    }
                }
                
                template CCR_MSG mw_CCR_chrgRuleReport_EvTri_IpCan_Rat (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 CCR_MSG.cCR_Body.subscription_Id p_subscriptionId,
                                               template CCR_MSG.cCR_Body.charging_Rule_Report p_charging_Rule_Report,
                                               template CCR_MSG.cCR_Body.event_Trigger p_event_Trigger,
                                               template CCR_MSG.cCR_Body.iP_CAN_Type p_ipCanType,
                                               template CCR_MSG.cCR_Body.rAT_Type p_ratType
                                               ) 
                modifies mw_CCR_basic := {
                    cCR_Body := {
                        subscription_Id       := p_subscriptionId,
                        charging_Rule_Report  := p_charging_Rule_Report,
                        event_Trigger         := p_event_Trigger,
                        iP_CAN_Type		  	  := p_ipCanType,
                        rAT_Type		  	  := p_ratType
                    }
                }
                
            } //     end group S9modified_request_templates_receive
            group S9modified_answer_templates_send {