Commit 5538753b authored by rennoch's avatar rennoch
Browse files

add declaration for TC_HPCRF_HMB01-03

parent a7865d96
Loading
Loading
Loading
Loading
+257 −0
Original line number Diff line number Diff line
@@ -372,6 +372,263 @@ module DiameterS9_S9_TCFunctions {
        
        } // group TP_HPCRFRole_HPQ        

        group TP_HPCRFRole_HST {//S9 Session Termination


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

                f_preamble_VPCRF();
                
                f_initiate_session_VPCRF();

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

                f_send_CCR(m_CCR_TerminationRequestBBERFatt(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm,
                                				m_qoS_Information_dummy // BBERF attributes TODO: to check more required AVPs         								    
                								));

                f_awaiting_CCA(mw_CCA_ResultCode(vc_sessionId, vc_originHost_IUT, vc_originRealm_IUT, mw_resultCode(mw_resultCode_diameterSuccess)));

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

                f_postamble_VPCRF();

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

            } // end function TC_HPCRF_HST_01

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

                f_preamble_VPCRF();
                
                f_initiate_session_VPCRF();

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

                f_send_CCR(m_CCR_UpdateRequest_SubSessEnfInf(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                {m_qoSRuleReport_dummy},
                                                m_qoS_Information_dummy, // BBERF attributes TODO: to check more required AVPs 
                                                {m_subsesEnforcementInfo_Operation(m_subsessionId_dummy(1),
                                                        m_subsessionOperation_dummy(Subsession_Operation_Code:TERMINATION_E))}                                                        								    
                                                )
                                                );

                f_awaiting_CCA(mw_CCA_ResultCode_SubsesDecInfo(vc_sessionId,
                    vc_originHost_IUT, vc_originRealm_IUT,
                    mw_resultCode(mw_resultCode_diameterSuccess),
                    {mw_SubsesDecisionInfo_resultCode(mw_subsessionId_dummy(1),mw_resultCode(mw_resultCode_diameterSuccess))}) );

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

                f_postamble_VPCRF();

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

            } // end function TC_HPCRF_HST_02

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

                f_preamble_VPCRF();
                
                f_initiate_session_VPCRF();

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

                action("Please trigger PCRF for RAR to terminate session.");

                //activation of PCC rule
                f_awaiting_RAR(mw_RAR_sessReleaseCause(vc_sessionId, ?, ?, ?, ?));

                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));


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

                //session termination
                f_terminate_session_VPCRF();

                f_postamble_VPCRF();

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

            } // end function TC_HPCRF_HST_03

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

                f_preamble_VPCRF();
                
                f_initiate_session_VPCRF();

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

                action("Please trigger PCRF for RAR to terminate session.");

                //activation of PCC rule
                f_awaiting_RAR(mw_RAR_SubsessDecInfo(vc_sessionId, ?, ?, ?, ?,
                                                                {mw_SubsesDecisionInfo_SessRelCause(mw_subsessionId_dummy(1),?)}));

                f_send_RAA(m_RAA_ResultCode(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));


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

                //session termination
                f_terminate_session_VPCRF();

                f_postamble_VPCRF();

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

            } // end function TC_HPCRF_HST_04

        
        } // group TP_HPCRFRole_HST        
        
        group TP_HPCRFRole_HMB {//S9 Multiple BBERF Handling

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

                f_preamble_VPCRF();
                
                f_initiate_session_VPCRF(); //TODO previous BBERF

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

                f_send_CCR(m_CCR_InitialRequest_MultBBERFact_AnGw(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                								m_multipleBBERFAction_dummy(Multiple_BBERF_Action_Code:ESTABLISHMENT_E),
                                                {m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))}
                                                ));

                f_awaiting_CCA(mw_CCA_ResultCode(vc_sessionId,
                    vc_originHost_IUT, vc_originRealm_IUT,
                    mw_resultCode(mw_resultCode_diameterSuccess)) );

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

                //session termination
                f_terminate_session_VPCRF();

                f_postamble_VPCRF();

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

            } // end function TC_PCRF_HMB_01

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

                f_preamble_VPCRF();
                
                f_initiate_session_VPCRF(); //TODO previous BBERF

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

                f_send_CCR(m_CCR_InitialRequest_SubSessEnfInf(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                        		{m_subsesEnforcementInfo_Operation_MultiBBERFact_AnGw
                                        		    (m_subsessionId_dummy(1),
													m_subsessionOperation_dummy(Subsession_Operation_Code:MODIFICATION_E),
                									m_multipleBBERFAction_dummy(Multiple_BBERF_Action_Code:ESTABLISHMENT_E),
                									{m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))}
                                                	)}
                            ));

                f_awaiting_CCA(mw_CCA_ResultCode(vc_sessionId,
                    vc_originHost_IUT, vc_originRealm_IUT,
                    mw_resultCode(mw_resultCode_diameterSuccess)) );

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

                //session termination
                f_terminate_session_VPCRF();

                f_postamble_VPCRF();

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

            } // end function TC_PCRF_HMB_02

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

                f_preamble_VPCRF();
                
                f_initiate_session_VPCRF(); //TODO previous BBERF

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

                f_send_CCR(m_CCR_UpdateRequest_MultBBERFact_AnGw(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                								m_multipleBBERFAction_dummy(Multiple_BBERF_Action_Code:ESTABLISHMENT_E),
                                                {m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))}
                                                ));

                f_awaiting_CCA(mw_CCA_ResultCode(vc_sessionId,
                    vc_originHost_IUT, vc_originRealm_IUT,
                    mw_resultCode(mw_resultCode_diameterSuccess)) );

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

                //session termination
                f_terminate_session_VPCRF();

                f_postamble_VPCRF();

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

            } // end function TC_PCRF_HMB_03



        } // group TP_HPCRFRole_HMB        

    } // group TP_HPCRFRole    

    group TP_VPCRFRole{ // §5.2.2
+93 −0
Original line number Diff line number Diff line
@@ -607,6 +607,18 @@ module DiameterS9_Templates {
                    subsession_Operation := p_subsessionOperation
                }

                template Subses_Enforcement_Info_AVP m_subsesEnforcementInfo_Operation_MultiBBERFact_AnGw  
                	( template Subsession_Id_AVP p_subsessionId, 
                	  template Subsession_Operation_AVP p_subsessionOperation,
                	  template Multiple_BBERF_Action_AVP p_multipleBberfAction,
                	  template CCR_MSG.cCR_Body.aN_GW_Address p_anGwAddress
                	) modifies m_subsesEnforcementInfo_Operation:= 
                {
                    subsession_Operation := p_subsessionOperation,
                    multiple_BBERF_Action := p_multipleBberfAction,
                    aN_GW_Address := p_anGwAddress
                }

                template Session_Release_Cause_AVP m_sessReleaseCause(template (present) Session_Release_Cause p_avpData) :=
                {
                    aVP_Header := m_aVP_HeaderVid_Mbit1(c_session_Release_Cause_AVP_Code, 4, c_vendId3gpp),
@@ -656,6 +668,13 @@ module DiameterS9_Templates {
                    experimental_Result				:= p_experimentalResult
                }
                
                template Subses_Decision_Info_AVP mw_SubsesDecisionInfo_SessRelCause  ( template (present) Subsession_Id_AVP p_subsessionId, 
                            template Session_Release_Cause_AVP p_sessionReleaseCause) 
                            modifies mw_SubsesDecisionInfo_dummy := 
                {
                    session_Release_Cause				:= p_sessionReleaseCause
                }
                
                template Experimental_Result_AVP mw_experimentalResult(template(present) Experimental_Result_Code_AVP p_ExperimentalResultCode) := {
                    aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_experimental_Result_AVP_Code),
                    vendor_Id := ?,
@@ -866,6 +885,36 @@ module DiameterS9_Templates {
                }

            
                template CCR_MSG m_CCR_InitialRequest_SubSessEnfInf (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 Framed_IP_Address_AVP p_framedIpAddress,
                                                                           template Framed_IPv6_Prefix_AVP p_framedIp6Address,
                                                                           template CCR_MSG.cCR_Body.subsesion_Enforcement_Info p_subsesionEnforcementInfo
                                                                        )
                modifies m_CCR_InitialRequest := {
                    cCR_Body := {
                        subsesion_Enforcement_Info       := p_subsesionEnforcementInfo
                    }
                }
            
                template CCR_MSG m_CCR_InitialRequest_MultBBERFact_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 Framed_IP_Address_AVP p_framedIpAddress,
                                                                           template Framed_IPv6_Prefix_AVP p_framedIp6Address,
                                                                           template Multiple_BBERF_Action_AVP p_multipleBberfAction,
                                                                           template CCR_MSG.cCR_Body.aN_GW_Address p_anGwAddress
                                                                        )
                modifies m_CCR_InitialRequest := {
                    cCR_Body := {
                        multiple_BBERF_Action := p_multipleBberfAction,
                        aN_GW_Address		  := p_anGwAddress
                    }
                }
                
                template CCR_MSG m_CCR_TerminationRequest(template Session_Id_AVP p_sessionId,
                                            template Origin_Host_AVP p_originHost,
                                            template Origin_Realm_AVP p_originRealm,
@@ -878,6 +927,22 @@ module DiameterS9_Templates {
                    }
                }
                
                template CCR_MSG m_CCR_TerminationRequestBBERFatt(template Session_Id_AVP p_sessionId,
                                            template Origin_Host_AVP p_originHost,
                                            template Origin_Realm_AVP p_originRealm,
                                            template Destination_Realm_AVP p_destinationRealm,
										    // BBERF attributes TODO: to check more required AVPs 
                                            template QoS_Information_AVP p_qosInformation 
                                            )
                    modifies m_CCR_TerminationRequest :=
                {
                    cCR_Body := {
                        cC_Request_Type := m_cC_Request_Type(TERMINATION_REQUEST_E),
                        cC_Request_Number := m_cC_Request_Number(1),
                        qoS_Information 	  := p_qosInformation // BBERF attributes
                    }
                }
                
                template CCR_MSG m_CCR_UpdateRequest (template Session_Id_AVP         p_sessionId,
                                                       template Origin_Host_AVP        p_originHost,
                                                       template Origin_Realm_AVP       p_originRealm,
@@ -913,6 +978,21 @@ module DiameterS9_Templates {
                    }
                }
            
                template CCR_MSG m_CCR_UpdateRequest_MultBBERFact_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 Multiple_BBERF_Action_AVP p_multipleBberfAction,
                                    template CCR_MSG.cCR_Body.aN_GW_Address p_anGwAddress
                                    )
                modifies m_CCR_basic := {
                    cCR_Body := {
                        cC_Request_Type       := m_cC_Request_Type ( UPDATE_REQUEST_E ),                        
                        multiple_BBERF_Action := p_multipleBberfAction,
                        aN_GW_Address		  := p_anGwAddress
                    }
                }

                template RAR_MSG m_RAR_SessionEnd(template Session_Id_AVP p_sessionId,
                                             template Origin_Host_AVP p_originHost,
                                             template Origin_Realm_AVP p_originRealm,
@@ -957,6 +1037,19 @@ module DiameterS9_Templates {
                    }
                }


                template RAR_MSG mw_RAR_sessReleaseCause(template Session_Id_AVP p_sessionId,
                                            template Origin_Host_AVP p_originHost,
                                            template Origin_Realm_AVP p_originRealm,
                                            template Destination_Realm_AVP p_destinationRealm,
                                            template Destination_Host_AVP p_destinationHost)
                    modifies mw_RAR_basic :=
                {
                    rAR_Body := {
                    session_Release_Cause := mw_sessReleaseCause(?)
                    }
                }
                
            } //     end group S9modified_request_templates_receive
            group S9modified_answer_templates_send {