Rev

Rev 61 | Rev 67 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | SVN

/**
 *  @author     STF 466
 *  @version    $Id: DiameterS9_Gxx_TCFunctions.ttcn3 62 2014-04-25 12:26:38Z rennoch $
 *  @desc       This module provides S9 test functions used by the test cases
 *              for IMS-DIAMETER tests.
 */

module DiameterS9_Gxx_TCFunctions {
    // LibCommon
    import from LibCommon_Sync {function f_selfOrClientSyncAndVerdict;
                                const c_prDone, c_tbDone, c_poDone;}
    import from LibCommon_VerdictControl all ;

    // LibDiameter
    import from LibDiameter_Types_Gx_AVPs all;
    import from LibDiameter_TypesAndValues all;
    import from LibDiameter_Templates all;
    import from LibDiameter_Interface all;
    import from LibDiameter_Steps all;
    import from LibDiameter_Types_Base_AVPs all;

    //DiameterS9
    import from DiameterS9_Templates all;
    import from DiameterS9_Gxx_Templates all;
    import from DiameterS9_Steps all;
    import from DiameterS9_PIXITS all;


    group TP_VPCRFRole{ // ยง5.2.2
        group TP_VPCRFRole_MS{
        }// end group TP_VPCRFRole_MS

        group TP_VPCRFRole_HSE{

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

            function f_TC_VPCRF_HSE_01_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

                f_send_CCR(m_CCR_Gxx_InitialRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                {m_anGwAddress(valueof(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6)))},
                                                omit
                                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HSE_01_BBERF1

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

            function f_TC_VPCRF_HSE_02_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

                f_send_CCR(m_CCR_Gxx_InitialRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                {m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))},
                                                m_called_Station_Id(PX_CALLED_STATION_ID_PDN)
                                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HSE_02_BBERF1
        }// end group TP_VPCRFRole_HSE

        group TP_VPCRFRole_HSM{

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

            function f_TC_VPCRF_HSM_01_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2a();
                //CCR SESSION MODIFICATION
                f_send_CCR(m_CCR_Gxx_UpdateRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                omit,
                                                {m_qoSRuleReport_RuleName({m_qoSRuleName_dummy(PX_QOS_RULE_NAME)})}
                                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HSM_01_BBERF1

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

            function f_TC_VPCRF_HSM_02_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2b();
                //CCR SESSION MODIFICATION
                f_send_CCR(m_CCR_Gxx_UpdateRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                m_called_Station_Id(PX_CALLED_STATION_ID_PDN),
                                                {m_qoSRuleReport_RuleName({m_qoSRuleName_dummy(PX_QOS_RULE_NAME)})}
                                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HSM_02_BBERF1

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

            function f_TC_VPCRF_HSM_03_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2a();
                //CCR SESSION MODIFICATION
                f_send_CCR(m_CCR_Gxx_UpdateRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                omit,
                                                {m_qoSRuleReport_RuleName({m_qoSRuleName_dummy(PX_QOS_RULE_NAME)})}
                                                )
                          );

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

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HSM_03_BBERF1

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

            function f_TC_VPCRF_HSM_04_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2b();
                //CCR SESSION MODIFICATION
                f_send_CCR(m_CCR_Gxx_UpdateRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                m_called_Station_Id(PX_CALLED_STATION_ID_PDN),
                                                {m_qoSRuleReport_RuleName({m_qoSRuleName_dummy(PX_QOS_RULE_NAME)})}
                                                )
                          );

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

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HSM_04_BBERF1
        }// end group TP_VPCRFRole_HSM
        group TP_VPCRFRole_HPQ{

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

            function f_TC_VPCRF_HPQ_01_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HPQ_01_BBERF1

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

            function f_TC_VPCRF_HPQ_02_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HPQ_02_BBERF1

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

            function f_TC_VPCRF_HPQ_03_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HPQ_03_BBERF1

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

            function f_TC_VPCRF_HPQ_04_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HPQ_04_BBERF1
        }// end group TP_VPCRFRole_HPQ

        group TP_VPCRFRole_HST{

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

            function f_TC_VPCRF_HST_01_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2a();
                //CCR SESSION TERMINATION
                f_send_CCR(m_CCR_Gxx_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, omit));

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HST_01_BBERF1

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

            function f_TC_VPCRF_HST_02_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2b();
                //CCR SESSION TERMINATION
                f_send_CCR(m_CCR_Gxx_TerminationRequest(vc_sessionId,
                                                        vc_originHost,
                                                        vc_originRealm,
                                                        vc_destinationRealm,
                                                        m_called_Station_Id(PX_CALLED_STATION_ID_PDN)
                                                        ));

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HST_02_BBERF1

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

            function f_TC_VPCRF_HST_03_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2a();
                //RAR SESSION TERMINATION
                f_awaiting_RAR(mw_RAR_Gxx_SessRelCause(vc_sessionId,
                                                    vc_originHost,
                                                    vc_originRealm,
                                                    vc_destinationRealm,
                                                    vc_destinationHost,
                                                    ?
                                                    ));

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

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HST_03_BBERF1

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

            function f_TC_VPCRF_HST_04_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2b();
                //RAR SESSION TERMINATION
                f_awaiting_RAR(mw_RAR_Gxx_SessRelCause(vc_sessionId,
                                                    vc_originHost,
                                                    vc_originRealm,
                                                    vc_destinationRealm,
                                                    vc_destinationHost,
                                                    ?
                                                    ));

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

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HST_04_BBERF1
        }// end group TP_VPCRFRole_HST
        group TP_VPCRFRole_HMB{

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

            function f_TC_VPCRF_HMB_01_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

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

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HMB_01_BBERF1

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

            function f_TC_VPCRF_HMB_01_BBERF2()
            runs on DiameterComponent {

                f_preamble_BBERF2();

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

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

                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2a();

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HMB_01_BBERF2

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

            function f_TC_VPCRF_HMB_02_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

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

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HMB_02_BBERF1

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

            function f_TC_VPCRF_HMB_02_BBERF2()
            runs on DiameterComponent {

                f_preamble_BBERF2();

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

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

                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2b();

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HMB_02_BBERF2

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

            function f_TC_VPCRF_HMB_03_BBERF1()
            runs on DiameterComponent {

                f_TC_VPCRF_HMB_01_BBERF1();

            } // end function f_TC_VPCRF_HMB_03_BBERF1

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

            function f_TC_VPCRF_HMB_03_BBERF2()
            runs on DiameterComponent {

                f_preamble_BBERF2();

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

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

                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2a();

                //CCR SESSION MODIFICATION
                f_send_CCR(m_CCR_Gxx_UpdateRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                omit,
                                                {m_qoSRuleReport_RuleName({m_qoSRuleName_dummy(PX_QOS_RULE_NAME)})}
                                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HMB_03_BBERF2

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

            function f_TC_VPCRF_HMB_04_BBERF1()
            runs on DiameterComponent {

                f_TC_VPCRF_HMB_02_BBERF1();

            } // end function f_TC_VPCRF_HMB_04_BBERF1

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

            function f_TC_VPCRF_HMB_04_BBERF2()
            runs on DiameterComponent {

                f_preamble_BBERF2();

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

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

                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2b();

                //CCR SESSION MODIFICATION
                f_send_CCR(m_CCR_Gxx_UpdateRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                m_called_Station_Id(PX_CALLED_STATION_ID_PDN),
                                                {m_qoSRuleReport_RuleName({m_qoSRuleName_dummy(PX_QOS_RULE_NAME)})}
                                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HMB_04_BBERF2

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

            function f_TC_VPCRF_HMB_05_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

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

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HMB_05_BBERF1

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

            function f_TC_VPCRF_HMB_05_BBERF2()
            runs on DiameterComponent {

                f_preamble_BBERF2();

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

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

                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2a();

                f_terminate_session_BBERF_case2a(); // postamble

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

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HMB_05_BBERF2

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

            function f_TC_VPCRF_HMB_06_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

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

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HMB_06_BBERF1

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

            function f_TC_VPCRF_HMB_06_BBERF2()
            runs on DiameterComponent {

                f_preamble_BBERF2();

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

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

                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2b();

                f_terminate_session_BBERF_case2b(); // postamble

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

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HMB_06_BBERF2

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

            function f_TC_VPCRF_HMB_07_BBERF1()
            runs on DiameterComponent {

                f_TC_VPCRF_HMB_01_BBERF1();

            } // end function f_TC_VPCRF_HMB_01_BBERF1

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

            function f_TC_VPCRF_HMB_07_BBERF2()
            runs on DiameterComponent {

                f_TC_VPCRF_HMB_01_BBERF2();//In case if RAR message is forwarded to BBERF, RAR message have to be checked in this function

            } // end function f_TC_VPCRF_HMB_07_BBERF2
        }// end group TP_VPCRFRole_HMB
       
        group TP_VPCRFRole_HDS{

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

            function f_TC_VPCRF_HDS_01_BBERF1()
            runs on DiameterComponent {

                f_TC_VPCRF_HMB_02_BBERF1();

            } // end function f_TC_VPCRF_HDS_01_BBERF1

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

            function f_TC_VPCRF_HDS_01_BBERF2()
            runs on DiameterComponent {

                f_preamble_BBERF2();

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

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

                //CCR INITIAL REQUEST
                f_send_CCR(m_CCR_Gxx_InitialRequest_SessLink_PDNConn
                               (vc_sessionId,
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                {m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))},
                                omit,//calledStation
                                omit,//PDN_Connection
                                m_sessionLinkingIndicator_dummy(SESSION_LINKING_DEFERRED_E)
                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HDS_01_BBERF2
           
        }// end group TP_VPCRFRole_HDS
       
        group TP_VPCRFRole_HSL{

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

            function f_TC_VPCRF_HSL_01_BBERF1()
            runs on DiameterComponent {

                f_TC_VPCRF_HMB_02_BBERF1();

            } // end function f_TC_VPCRF_HSL_01_BBERF1

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

            function f_TC_VPCRF_HSL_01_BBERF2()
            runs on DiameterComponent {

                f_preamble_BBERF2();

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

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

                //CCR INITIAL REQUEST
                f_send_CCR(m_CCR_Gxx_InitialRequest_SessLink_PDNConn
                               (vc_sessionId,
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                {m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))},
                                m_called_Station_Id(PX_CALLED_STATION_ID_PDN),//calledStation
                                m_pDN_Connection_ID(PX_PDN_CONNECTION_ID_DATA),//PDN_Connection
                                omit
                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HSL_01_BBERF2

        }// end group TP_VPCRFRole_HSL

        group TP_VPCRFRole_VQR{

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

            function f_TC_VPCRF_VQR_01_PCEF()
            runs on DiameterComponent {

                f_preamble_PCEF();

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

                f_send_CCR(m_CCR_Gx_InitialRequest_chrgRuleReport
                              (vc_sessionId,
                               vc_originHost,
                               vc_originRealm,
                               vc_destinationRealm,
                               f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                               f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                               {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                   valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                               {m_chargRuleReport_RNameStatus(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)),valueof(m_pCC_Rule_Status(PX_PCC_RULE_STATUS)))}
                               )
                          );

                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_PCEF(); // postamble

                f_postamble_PCEF();

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

            } // end function f_TC_VPCRF_VQR_01_PCEF

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

            function f_TC_VPCRF_VQR_02_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

                f_send_CCR(m_CCR_Gxx_InitialRequest_qosRuleReport
                               (vc_sessionId,
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                {m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))},
                                omit,
                                {m_qoSRuleReport_RuleName({m_qoSRuleName_dummy(PX_QOS_RULE_NAME)})}
                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_VQR_02_BBERF1

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

            function f_TC_VPCRF_VQR_03_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

                f_send_CCR(m_CCR_Gxx_InitialRequest_qosRuleReport
                               (vc_sessionId,
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                {m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))},
                                m_called_Station_Id(PX_CALLED_STATION_ID_PDN),
                                {m_qoSRuleReport_RuleName({m_qoSRuleName_dummy(PX_QOS_RULE_NAME)})}
                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_VQR_03_BBERF1

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

            function f_TC_VPCRF_VQR_04_PCEF()
            runs on DiameterComponent {

                f_preamble_PCEF();

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

                f_send_CCR(m_CCR_Gx_InitialRequest_chrgRuleReport
                              (vc_sessionId,
                               vc_originHost,
                               vc_originRealm,
                               vc_destinationRealm,
                               f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                               f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                               {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                   valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                               {m_chargRuleReport_RNameStatus(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)),valueof(m_pCC_Rule_Status(PX_PCC_RULE_STATUS)))}
                               )
                          );

                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_send_CCR(m_CCR_Gx_UpdateRequest_chrgRuleReport
                              (vc_sessionId,
                               vc_originHost,
                               vc_originRealm,
                               vc_destinationRealm,
                               {m_chargRuleReport_RNameStatus(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)),valueof(m_pCC_Rule_Status(PX_PCC_RULE_STATUS)))}
                               )
                          );

                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_PCEF(); // postamble

                f_postamble_PCEF();

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

            } // end function f_TC_VPCRF_VQR_04_PCEF

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

            function f_TC_VPCRF_VQR_05_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

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

                //CCR SESSION MODIFICATION
                f_send_CCR(m_CCR_Gxx_UpdateRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                omit,
                                                {m_qoSRuleReport_RuleName({m_qoSRuleName_dummy(PX_QOS_RULE_NAME)})}
                                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_VQR_05_BBERF1

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

            function f_TC_VPCRF_VQR_06_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

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

                //CCR SESSION MODIFICATION
                f_send_CCR(m_CCR_Gxx_UpdateRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                m_called_Station_Id(PX_CALLED_STATION_ID_PDN),
                                                {m_qoSRuleReport_RuleName({m_qoSRuleName_dummy(PX_QOS_RULE_NAME)})}
                                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_VQR_06_BBERF1

        }// end group TP_VPCRFRole_VQR

        group TP_VPCRFRole_VPQ{

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

            function f_TC_VPCRF_VPQ_01_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2a();
                //RAR SESSION TERMINATION if needed
//                f_awaiting_RAR(mw_RAR_Gxx_SessRelCause(vc_sessionId,
//                                                    vc_originHost,
//                                                    vc_originRealm,
//                                                    vc_destinationRealm,
//                                                    vc_destinationHost,
//                                                    ?
//                                                    ));

                //f_send_RAA(m_RAA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_VPQ_01_BBERF1

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

            function f_TC_VPCRF_VPQ_02_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2b();
                //RAR SESSION TERMINATION if needed
//                f_awaiting_RAR(mw_RAR_Gxx_SessRelCause(vc_sessionId,
//                                                    vc_originHost,
//                                                    vc_originRealm,
//                                                    vc_destinationRealm,
//                                                    vc_destinationHost,
//                                                    ?
//                                                    ));

                //f_send_RAA(m_RAA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm, m_resultCode(m_resultCode_diameterSuccess)));

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_VPQ_02_BBERF1

        }//end group TP_VPCRFRole_VPQ

        group TP_VPCRFRole_VST{

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

            function f_TC_VPCRF_VST_01_PCEF()
            runs on DiameterComponent {

                f_preamble_PCEF();

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

                f_send_CCR(m_CCR_Gx_InitialRequest_chrgRuleReport
                              (vc_sessionId,
                               vc_originHost,
                               vc_originRealm,
                               vc_destinationRealm,
                               f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                               f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                               {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                   valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                               {m_chargRuleReport_RNameStatus(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)),valueof(m_pCC_Rule_Status(PX_PCC_RULE_STATUS)))}
                               )
                          );

                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

                f_send_CCR(m_CCR_Gx_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm));
                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_postamble_PCEF();

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

            } // end function f_TC_VPCRF_VST_01_PCEF

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

            function f_TC_VPCRF_VST_02_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2a();
                //CCR SESSION TERMINATION
                f_send_CCR(m_CCR_Gxx_TerminationRequest(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, omit));

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_VST_02_BBERF1

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

            function f_TC_VPCRF_VST_03_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2b();
                //CCR SESSION TERMINATION
                f_send_CCR(m_CCR_Gxx_TerminationRequest(vc_sessionId,
                                                        vc_originHost,
                                                        vc_originRealm,
                                                        vc_destinationRealm,
                                                        m_called_Station_Id(PX_CALLED_STATION_ID_PDN)
                                                        ));

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_HST_03_BBERF1

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

            function f_TC_VPCRF_VST_04_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2a();
                //RAR SESSION TERMINATION
                f_awaiting_RAR(mw_RAR_Gxx_SessRelCause(vc_sessionId,
                                                    vc_originHost,
                                                    vc_originRealm,
                                                    vc_destinationRealm,
                                                    vc_destinationHost,
                                                    ?
                                                    ));

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

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_VST_04_BBERF1

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

            function f_TC_VPCRF_VST_05_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                //CCR INITIAL REQUEST
                f_initiate_session_BBERF_case2b();
                //RAR SESSION TERMINATION
                f_awaiting_RAR(mw_RAR_Gxx_SessRelCause(vc_sessionId,
                                                    vc_originHost,
                                                    vc_originRealm,
                                                    vc_destinationRealm,
                                                    vc_destinationHost,
                                                    ?
                                                    ));

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

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

                f_terminate_session_BBERF_case2b(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_VST_05_BBERF1
        }// end group TP_VPCRFRole_VST

        group TP_VPCRFRole_VMB {

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

            function f_TC_VPCRF_VMB_01_PCEF()
            runs on DiameterComponent {

                f_preamble_PCEF();

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

                f_send_CCR(m_CCR_Gx_InitialRequest_chrgRuleReport
                              (vc_sessionId,
                               vc_originHost,
                               vc_originRealm,
                               vc_destinationRealm,
                               f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                               f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                               {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                   valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                               {m_chargRuleReport_RNameStatus(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)),valueof(m_pCC_Rule_Status(PX_PCC_RULE_STATUS)))}
                               )
                          );

                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_send_CCR(m_CCR_Gx_UpdateRequest_chrgRuleReport_EvTri_AnGw
                              (vc_sessionId,
                               vc_originHost,
                               vc_originRealm,
                               vc_destinationRealm,
                               {m_chargRuleReport_RNameStatus(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)),valueof(m_pCC_Rule_Status(PX_PCC_RULE_STATUS)))},
                                           {m_event_Trigger(AN_GW_CHANGE_E)},
                                           {m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))}
                               )
                          );

                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_PCEF(); // postamble

                f_postamble_PCEF();

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

            } // end function f_TC_VPCRF_VMB_01_PCEF

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

            function f_TC_VPCRF_VMB_02_PCEF()
            runs on DiameterComponent {

                f_preamble_PCEF();

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

                f_send_CCR(m_CCR_Gx_InitialRequest_chrgRuleReport
                              (vc_sessionId,
                               vc_originHost,
                               vc_originRealm,
                               vc_destinationRealm,
                               f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                               f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                               {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                   valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                               {m_chargRuleReport_RNameStatus(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)),valueof(m_pCC_Rule_Status(PX_PCC_RULE_STATUS)))}
                               )
                          );

                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_send_CCR(m_CCR_Gx_UpdateRequest_chrgRuleReport_EvTri_IpCanType_RatType
                              (vc_sessionId,
                               vc_originHost,
                               vc_originRealm,
                               vc_destinationRealm,
                               {m_chargRuleReport_RNameStatus(valueof(m_chargingRuleName(PX_CHARGING_RULE_NAME_DATA)),valueof(m_pCC_Rule_Status(PX_PCC_RULE_STATUS)))},
                                           {m_event_Trigger(AN_GW_CHANGE_E)},
                                           m_iP_CAN_Type (PX_IP_CAN_TYPE),
                                           m_rAT_Type (PX_RAT_TYPE)
                               )
                          );

                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_PCEF(); // postamble

                f_postamble_PCEF();

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

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

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

            function f_TC_VPCRF_VDS_01_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

                f_send_CCR(m_CCR_Gxx_InitialRequest_SessLink_PDNConn
                               (vc_sessionId,
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                {m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))},
                                omit,//calledStation
                                omit,//PDN_Connection
                                m_sessionLinkingIndicator_dummy(SESSION_LINKING_DEFERRED_E)
                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_VDS_01_BBERF1

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

            function f_TC_VPCRF_VDS_02_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

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

                //CCR SESSION MODIFICATION
                f_send_CCR(m_CCR_Gxx_UpdateRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                m_called_Station_Id(PX_CALLED_STATION_ID_PDN),
                                                omit // qos
                                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

            } // end function f_TC_VPCRF_VDS_02_BBERF1

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

            function f_TC_VPCRF_VDS_03_BBERF1()
            runs on DiameterComponent {

                f_preamble_BBERF();

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

                f_send_CCR(m_CCR_Gxx_InitialRequest_SessLink_PDNConn
                               (vc_sessionId,
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                {m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))},
                                                m_called_Station_Id(PX_CALLED_STATION_ID_PDN),
                                omit,//PDN_Connection
                                omit //m_sessionLinkingIndicator_dummy(SESSION_LINKING_DEFERRED_E)
                                )
                          );

                f_awaiting_CCA(mw_CCA_Gxx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_BBERF_case2a(); // postamble

                f_postamble_BBERF();

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

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

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

            function f_TC_VPCRF_VSL_01_PCEF()
            runs on DiameterComponent {

                f_preamble_PCEF();

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

                f_send_CCR(m_CCR_Gxx_InitialRequest_SessLink_PDNConn
                               (vc_sessionId,
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                omit, //{m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))},
                                m_called_Station_Id(PX_CALLED_STATION_ID_PDN),
                                                m_pDN_Connection_ID(PX_PDN_CONNECTION_ID_DATA),//PDN_Connection
                                omit //m_sessionLinkingIndicator_dummy(SESSION_LINKING_DEFERRED_E)
                                )
                          );

                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_PCEF(); // postamble

                f_postamble_PCEF();

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

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

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

            function f_TC_VPCRF_VIF_01_PCEF()
            runs on DiameterComponent {

                f_preamble_PCEF();

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

                f_send_CCR(m_CCR_Gxx_InitialRequest_routingRule_EvTri
                               (vc_sessionId,
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                omit, // event_Trigger
                                                m_routing_Rule_Install(valueof(m_routing_Rule_Definition(valueof(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE)),valueof(m_routing_Filter)))),
                                omit  // routing_Rule_Remove
                                )
                          );

                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_PCEF(); // postamble

                f_postamble_PCEF();

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

            } // end function f_TC_VPCRF_VIF_01_PCEF

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

            function f_TC_VPCRF_VIF_02_PCEF()
            runs on DiameterComponent {

                f_preamble_PCEF();

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

                f_send_CCR(m_CCR_Gxx_InitialRequest_routingRule_EvTri
                               (vc_sessionId,
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                f_framedIpAddress4_send(PX_UE1_framedIpAddress),
                                f_framedIpAddress6_send(PX_UE1_framedIp6Address),
                                {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)),
                                    valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))},
                                                {m_event_Trigger(ROUTING_RULE_CHANGE_E)},
                                omit, // m_routing_Rule_Install
                                                m_routing_Rule_Remove(valueof(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE)))  // routing_Rule_Remove
                                )
                          );

                f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm));

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

                f_terminate_session_PCEF(); // postamble

                f_postamble_PCEF();

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

            } // end function f_TC_VPCRF_VIF_02_PCEF
                                   
        } //end group TP_VPCRFRole_VIF

    } // group TP_VPCRFRole    
   
}// end module DiameterS9_Gxx_TCFunctions