Commit d82165f3 authored by garciay's avatar garciay
Browse files

STF490: Add TCs TC_RO_CTF_EC_04..06

Some FIXME/TODO to be fixed
Review AVPs typing for 'set of' in templates
parent 472dd11f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -460,13 +460,13 @@ module DiameterRfRo_PICS {
        
        /**
         * @desc Does CTF support DDFH configured for TERMINATE_OR_BUFFER? 
         * @see  ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/17.4
         * @see  ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/18.1
         */
        modulepar boolean PICS_RO_CTF_DDFH_TERMINATE_OR_BUFFER := false;
        
        /**
         * @desc Does CTF support DDFH configured for CONTINUE? 
         * @see  ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/17.5
         * @see  ETSI TS 103 374-1 V1.1.2 (2015-09) A.7/18.2
         */
        modulepar boolean PICS_RO_CTF_DDFH_CONTINUE := false;
        
+351 −3
Original line number Diff line number Diff line
@@ -5821,6 +5821,8 @@ module DiameterRfRo_TCFunctions {
                        )
                    );
                    
                    // the IUT does not received the CC-Answer
                    
                    f_awaiting_CCR(
                        mw_CCR_CmdFlags_PET(
                            mw_diameterHeaderReq_CmdFlags(     // containing Diameter-Header
@@ -5916,6 +5918,8 @@ module DiameterRfRo_TCFunctions {
                        )
                    );
                    
                    // the IUT does not received the CC-Answer
                    
                    f_awaiting_CCR(
                        mw_CCR_CmdFlags_PET(
                            mw_diameterHeaderReq_CmdFlags(     // containing Diameter-Header
@@ -6007,6 +6011,8 @@ module DiameterRfRo_TCFunctions {
                        )
                    );
                    
                    // the IUT does not received the CC-Answer
                    
                    f_awaiting_CCR(
                        mw_CCR_CmdFlags_PET(
                            mw_diameterHeaderReq_CmdFlags(     // containing Diameter-Header
@@ -6059,6 +6065,348 @@ module DiameterRfRo_TCFunctions {
                    
                } // End of function f_TC_RO_CTF_EC_03
                
                /**
                 * @desc    Verify that the IUT retransmits an unacknowledged CC-Request (T-flag).
                 * @verdict pass on success, fail on error or inconc on timeout only 
                 */
                function f_TC_RO_CTF_EC_04() runs on DiameterRfRo {
                    // Local variables
                    
                    // Preamble
                    f_preamble_Ro_OCF();
                    // CCR,CCA [Initial] are exchanged.
                    // FIXME Done by SIP exchanges?
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_awaiting_CCR(
                        mw_CCR_CmdFlags_PET(
                            mw_diameterHeaderReq_CmdFlags(     // containing Diameter-Header
                                CCR_E, 
                                ?, 
                                mw_cmdFlagsReq_PET(            //     containing Command-Flags
                                    '0'B,'0'B,
                                    '1'B                       //         containing T-flag
                                                               //             indicating value ‘0’
                                )
                            ), 
                            ?,
                            mdw_ccrBodyAvps(
                                vc_originHost,                          // containing an Origin-Host AVP
                                vc_originRealm,                         // containing an Origin-Realm AVP
                                vc_destinationRealm,                    // containing a Destination-Realm AVP
                                mw_cC_Request_Type_AVP(TERMINATION_REQUEST_E),// containing a CC-Request-Type AVP
                                ?,                                      // containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                {(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}  // containing a Multiple-Services-Credit-Control AVP
                            )
                        )
                    );
                    
                    // the IUT does not received the CC-Answer
                    
                    f_awaiting_CCR(
                        mw_CCR_CmdFlags_PET(
                            mw_diameterHeaderReq_CmdFlags(     // containing Diameter-Header
                                CCR_E, 
                                ?, 
                                mw_cmdFlagsReq_PET(            //     containing Command-Flags
                                    '0'B,'0'B,
                                    '1'B                       //         containing T-flag
                                                               //             indicating value ‘1’
                                )
                            ), 
                            ?,
                            mdw_ccrBodyAvps(
                                vc_originHost,                          // containing an Origin-Host AVP
                                vc_originRealm,                         // containing an Origin-Realm AVP
                                vc_destinationRealm,                    // containing a Destination-Realm AVP
                                mw_cC_Request_Type_AVP(TERMINATION_REQUEST_E),// containing a CC-Request-Type AVP
                                ?,                                      // containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                {(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}  // containing a Multiple-Services-Credit-Control AVP
                            )
                        )
                    );

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

                    f_send_CCA(
                        md_cCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            md_ccaBodyAvps(
                                m_resultCode(                   // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm,                 // containing an Origin-Realm AVP
                                m_cC_Request_Type(TERMINATION_REQUEST_E)
                        ))
                    );

                    f_sendCCR_awaitCCA_(
                                        TERMINATION_REQUEST_E, 
                                        vc_recv_cC_Request_Number
                                        );
                    f_postamble_Ro_OCF();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                    
                } // End of function f_TC_RO_CTF_EC_04
                
                /**
                 * @desc    Verify that the IUT retransmits an unacknowledged CC-Request (T-flag).
                 * @verdict pass on success, fail on error or inconc on timeout only 
                 */
                function f_TC_RO_CTF_EC_05() runs on DiameterRfRo {
                    // Local variables
                    
                    // Preamble
                    f_preamble_Ro_OCF();
                    // CCR, CCA [Initial] and CCR, CCA [Update] are exchanged.
                    // FIXME Done by SIP exchanges?
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_awaiting_CCR(
                        mw_CCR_CmdFlags_PET(
                            mw_diameterHeaderReq_CmdFlags(     // containing Diameter-Header
                                CCR_E, 
                                ?, 
                                mw_cmdFlagsReq_PET(            //     containing Command-Flags
                                    '0'B,'0'B,
                                    '1'B                       //         containing T-flag
                                                               //             indicating value ‘0’
                                )
                            ), 
                            ?,
                            mdw_ccrBodyAvps(
                                vc_originHost,                          // containing an Origin-Host AVP
                                vc_originRealm,                         // containing an Origin-Realm AVP
                                vc_destinationRealm,                    // containing a Destination-Realm AVP
                                mw_cC_Request_Type_AVP(UPDATE_REQUEST_E),// containing a CC-Request-Type AVP
                                ?,                                      // containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                {(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}  // containing a Multiple-Services-Credit-Control AVP
                            )
                        )
                    );
                    
                    // the IUT does not received the CC-Answer
                    
                    f_awaiting_CCR(
                        mw_CCR_CmdFlags_PET(
                            mw_diameterHeaderReq_CmdFlags(     // containing Diameter-Header
                                CCR_E, 
                                ?, 
                                mw_cmdFlagsReq_PET(            //     containing Command-Flags
                                    '0'B,'0'B,
                                    '1'B                       //         containing T-flag
                                                               //             indicating value ‘1’
                                )
                            ), 
                            ?,
                            mdw_ccrBodyAvps(
                                vc_originHost,                          // containing an Origin-Host AVP
                                vc_originRealm,                         // containing an Origin-Realm AVP
                                vc_destinationRealm,                    // containing a Destination-Realm AVP
                                mw_cC_Request_Type_AVP(UPDATE_REQUEST_E),// containing a CC-Request-Type AVP
                                ?,                                      // containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                {(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}  // containing a Multiple-Services-Credit-Control AVP
                            )
                        )
                    );

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

                    f_send_CCA(
                        md_cCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            md_ccaBodyAvps(
                                m_resultCode(                   // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm,                 // containing an Origin-Realm AVP
                                m_cC_Request_Type(UPDATE_REQUEST_E)
                        ))
                    );

                    f_postamble_Ro_OCF();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                    
                } // End of function f_TC_RO_CTF_EC_05
                
                /**
                 * @desc    Verify that on communication failure, the IUT stores generated accounting data in a non-volatile memory and, on communication restored, sends them to the OCS, in the order they were stored in the buffer
                 * @verdict pass on success, fail on error or inconc on timeout only 
                 */
                function f_TC_RO_CTF_EC_06() runs on DiameterRfRo {
                    // Local variables
                    var integer v_counter;
                    
                    // Preamble
                    f_preamble_Ro_OCF();
                    // CCR, CCA [Initial] and CCR, CCA [Update] are exchanged.
                    // FIXME Done by SIP exchanges?
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_awaiting_CCR(
                        mw_CCR_CmdFlags_PET(
                            mw_diameterHeaderReq_CmdFlags(     // containing Diameter-Header
                                CCR_E, 
                                ?, 
                                mw_cmdFlagsReq_PET(            //     containing Command-Flags
                                    '0'B,'0'B,
                                    '1'B                       //         containing T-flag
                                                               //             indicating value ‘0’
                                )
                            ), 
                            ?,
                            mdw_ccrBodyAvps(
                                vc_originHost,                          // containing an Origin-Host AVP
                                vc_originRealm,                         // containing an Origin-Realm AVP
                                vc_destinationRealm,                    // containing a Destination-Realm AVP
                                mw_cC_Request_Type_AVP(UPDATE_REQUEST_E),// containing a CC-Request-Type AVP
                                ?,                                      // containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                {(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}  // containing a Multiple-Services-Credit-Control AVP
                            )
                        )
                    );
                    
                    // the IUT does not received the CC-Answer
                    
                    f_awaiting_CCR(
                        mw_CCR_CmdFlags_PET(
                            mw_diameterHeaderReq_CmdFlags(     // containing Diameter-Header
                                CCR_E, 
                                ?, 
                                mw_cmdFlagsReq_PET(            //     containing Command-Flags
                                    '0'B,'0'B,
                                    '1'B                       //         containing T-flag
                                                               //             indicating value ‘1’
                                )
                            ), 
                            ?,
                            mdw_ccrBodyAvps(
                                vc_originHost,                          // containing an Origin-Host AVP
                                vc_originRealm,                         // containing an Origin-Realm AVP
                                vc_destinationRealm,                    // containing a Destination-Realm AVP
                                mw_cC_Request_Type_AVP(UPDATE_REQUEST_E),// containing a CC-Request-Type AVP
                                ?,                                      // containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                {(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}  // containing a Multiple-Services-Credit-Control AVP
                            )
                        )
                    );
                    
                    // Wait for a long time, the IUT shall buffered CC-Request
                    tc_wait.start;
                    // TODO Do we need traffic on SIP side?
                    alt {
                        [] tc_wait.timeout {
                            setverdict(fail,"*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***")
                        }
                    } // End of 'altstep' statement
                    
                    // The OCF restart
                    f_send_CCA(
                        md_cCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            md_ccaBodyAvps(
                                m_resultCode(                   // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm,                 // containing an Origin-Realm AVP
                                m_cC_Request_Type(UPDATE_REQUEST_E)
                        ))
                    );
                    // The IUT shall send the buffered CC-Request
                    v_counter := 0;
                    tc_delay.start;
                    alt {
                        [] DIAMP.receive(
                            DIAMETER_MSG : {
                                cCR_MSG := 
                                    mw_CCR_CmdFlags_PET(
                                        mw_diameterHeaderReq_CmdFlags(     // containing Diameter-Header
                                            CCR_E, 
                                            ?, 
                                            mw_cmdFlagsReq_PET(            //     containing Command-Flags
                                                '0'B,'0'B,
                                                '1'B                       //         containing T-flag
                                                                           //             indicating value ‘0’
                                            )
                                        ), 
                                        ?,
                                        mdw_ccrBodyAvps(
                                            vc_originHost,                          // containing an Origin-Host AVP
                                            vc_originRealm,                         // containing an Origin-Realm AVP
                                            vc_destinationRealm,                    // containing a Destination-Realm AVP
                                            mw_cC_Request_Type_AVP(UPDATE_REQUEST_E),// containing a CC-Request-Type AVP
                                            ?,                                      // containing a CC-Request-Number AVP
                                            ?,                                      // containing a Service-Context-Id AVP
                                            mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                            {(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
                                            mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
                                            mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}  // containing a Multiple-Services-Credit-Control AVP
                                        )
                                    )
                                } // DIAMETER_MSG
                        ) {
                            tc_delay.stop;
                            v_counter := v_counter + 1;
                            // Send CCA
                            f_send_CCA(
                                md_cCA( 
                                    vc_sessionId,                       // containing a Session-ID AVP
                                    md_ccaBodyAvps(
                                        m_resultCode(                   // containing a Result-Code AVP
                                            DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                        ),
                                        vc_originHost,                  // containing an Origin-Host AVP
                                        vc_originRealm,                 // containing an Origin-Realm AVP
                                        m_cC_Request_Type(UPDATE_REQUEST_E)
                                ))
                            );
                            tc_delay.start;
                        }
                        [] tc_delay.timeout {
                            // No more message buffered
                        }
                    } // End of 'altstep' statement
                    log("*** " & __SCOPE__ & ": INFO: " & int2str(v_counter) & " CCR were buffered by the IUT ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                    f_postamble_Ro_OCF();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                    
                } // End of function f_TC_RO_CTF_EC_06
                
            } // End of group TP_RO_CTF_EC
            // 5.2.3.2.5 Tariff Changes 
            group TP_RO_CTF_CH {
+233 −3

File changed.

Preview size limit exceeded, changes collapsed.

+5 −3
Original line number Diff line number Diff line
@@ -166,11 +166,13 @@ module DiameterRfRo_TestControl {
            }
            if (PICS_RO_CTF_EVENT_CHARGING_WITH_UNIT_RESERVATION) {
                execute(TC_RO_CTF_EC_03());
//                execute(TC_RO_CTF_EC_04());
                execute(TC_RO_CTF_EC_04());
            }
            if (PICS_RO_CTF_SESSION_CHARGING_WITH_UNIT_RESERVATION) {
//                execute(TC_RO_CTF_EC_05());
//                execute(TC_RO_CTF_EC_06());
                execute(TC_RO_CTF_EC_05());
                if (PICS_RO_CTF_DDFH_TERMINATE_OR_BUFFER and not(PICS_RO_CTF_FAILOVER)) {
                    execute(TC_RO_CTF_EC_06());
                }
//                execute(TC_RO_CTF_EC_07());
//                execute(TC_RO_CTF_EC_08());
            }