Commit 3a73f30e authored by juvancic's avatar juvancic
Browse files

updated tests

parent 200dac92
Loading
Loading
Loading
Loading
+154 −7
Original line number Original line Diff line number Diff line
@@ -10,8 +10,7 @@ module DiameterRfRo_TCFunctions {
    import from LibCommon_VerdictControl all ;
    import from LibCommon_VerdictControl all ;


    // LibDiameter
    // LibDiameter
    //import from Diameter_PIXITS all;
    import from LibDiameter_PIXITS all;
    
    import from LibDiameter_TypesAndValues all;
    import from LibDiameter_TypesAndValues all;
    import from LibDiameter_Types_Base_AVPs all;
    import from LibDiameter_Types_Base_AVPs all;
    import from LibDiameter_Types_RfRo_AVPs all;
    import from LibDiameter_Types_RfRo_AVPs all;
@@ -250,14 +249,20 @@ module DiameterRfRo_TCFunctions {
                 */
                 */
                function f_TC_RF_CDF_TC_03() runs on DiameterRfRo {
                function f_TC_RF_CDF_TC_03() runs on DiameterRfRo {
                    // Local variables
                    // Local variables
                    
                    var float v_interimTimer:=0.0;
                    // Preamble
                    // Preamble
                    f_preamble_Rf_CTF();
                    f_preamble_Rf_CTF();
                    f_sendACR_awaitACA_(START_RECORD_E,3,1);
                    f_sendACR_awaitACA_(START_RECORD_E,3,1);
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");


                    //set of timer
                    if (ispresent(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval)){
                        v_interimTimer := int2float(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval.aVP_Data);
                    }
                    
                    
                    log("*** " & __SCOPE__ & ": INFO: Wait for",v_interimTimer,"s to send next ACR. ***");
                    f_wait(v_interimTimer);
                    f_send_ACR(
                    f_send_ACR(
                        md_aCR(
                        md_aCR(
                            vc_sessionId, 
                            vc_sessionId, 
@@ -371,7 +376,6 @@ module DiameterRfRo_TCFunctions {
            //5.2.2.1.4 ErrorCases
            //5.2.2.1.4 ErrorCases
            group ErrorCases {
            group ErrorCases {
                
                
                
                /**
                /**
                 * @desc    Verify that the IUT terminates the call in case of timer expiration when the Session Based Charging procedure is not completed properly.
                 * @desc    Verify that the IUT terminates the call in case of timer expiration when the Session Based Charging procedure is not completed properly.
                 * @verdict pass on success, fail on error or inconc on timeout only 
                 * @verdict pass on success, fail on error or inconc on timeout only 
@@ -388,7 +392,7 @@ module DiameterRfRo_TCFunctions {
                    if (ispresent(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval)){
                    if (ispresent(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval)){
                        v_sessionAbortTimer := 2.0 * int2float(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval.aVP_Data);
                        v_sessionAbortTimer := 2.0 * int2float(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval.aVP_Data);
                    }else{
                    }else{
                    //    v_sessionAbortTimer := 2.0 * int2float(PX_DIAMETER_TWAIT);
                        log("*** " & __SCOPE__ & ": INFO: Test may FAILED because of incorrect timer setting. ***");
                    }
                    }
                    
                    
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
@@ -421,14 +425,23 @@ module DiameterRfRo_TCFunctions {
                 */
                 */
                function f_TC_RF_CDF_EC_02() runs on DiameterRfRo {
                function f_TC_RF_CDF_EC_02() runs on DiameterRfRo {
                    // Local variables
                    // Local variables
                    
                    var float v_sessionAbortTimer:=0.0;
                    // Preamble
                    // Preamble
                    f_preamble_Rf_CTF();
                    f_preamble_Rf_CTF();
                    f_sendACR_awaitACA_(START_RECORD_E,3,1);
                    f_sendACR_awaitACA_(START_RECORD_E,3,1);
                    f_sendACR_awaitACA_(INTERIM_RECORD_E,3,1);
                    f_sendACR_awaitACA_(INTERIM_RECORD_E,3,1);
                    
                    //set of timer due to RFC3588 p.8.2 par 5
                    if (ispresent(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval)){
                        v_sessionAbortTimer := 2.0 * int2float(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval.aVP_Data);
                    }else{
                        log("*** " & __SCOPE__ & ": INFO: Test may FAILED because of incorrect timer setting. ***");
                    }
                    
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");


                    f_wait(v_sessionAbortTimer);
                    f_awaiting_ASR(
                    f_awaiting_ASR(
                        mdw_aSR( 
                        mdw_aSR( 
                            vc_sessionId,                      // containing a Session-ID AVP
                            vc_sessionId,                      // containing a Session-ID AVP
@@ -448,6 +461,140 @@ module DiameterRfRo_TCFunctions {
                   
                   
                    
                    
                } // End of function f_TC_RF_CDF_EC_02
                } // End of function f_TC_RF_CDF_EC_02

                /**
                 * @desc    Verify that the IUT can successfully process Duplicate Detection AC-Request [Event] where Event Based Charging is used
                 * @verdict pass on success, fail on error or inconc on timeout only 
                 */
                function f_TC_RF_CDF_EC_03() runs on DiameterRfRo {
                    // Local variables
                    var template ACR_MSG vt_aCR_T_flag;
                    // Preamble
                    f_preamble_Rf_CTF();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    //preprare MSG template
                    vt_aCR_T_flag := md_aCR(
	                    vc_sessionId, 
	                    md_acrBodyAvps_TypeOfCharging(
	                        vc_originHost,                 // containing an Origin-Host AVP
	                        vc_originRealm,                // containing an Origin-Realm AVP
	                        m_accounting_Record_Type(      // containing an Accounting-Record-Type AVP
	                            EVENT_RECORD_E
	                        ),
	                        m_accounting_Record_Number(    // containing an Accounting-Record-Number AVP
	                            3                          //     indicating the value 3
	                        ),
	                        m_event_timestamp(1),
	                        m_service_Information_AVP_dummy // FIXME To be continue by creating a m_service_Information template modifying m_service_Information_AVP_dummy 
	                    )
	                );
	                //set T-bit to true - duplicated
                    vt_aCR_T_flag.header.cmdflags.t_bit := '1'B; 


                    f_send_ACR(valueof(vt_aCR_T_flag));
                    f_awaiting_ACA(
                        mdw_aCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            mdw_acaBodyAvps(
                                mw_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
                                mw_accounting_Record_Type(      // containing an Accounting-Record-Type AVP
                                    EVENT_RECORD_E
                                ),
                                mw_accounting_Record_Number(    // containing an Acct-Application-Id AVP
                                    3                           //     indicating the value 3
                                )
                        ))
                    );

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

                    f_postamble_Rf_CTF();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); 
                   
                    
                } // End of function f_TC_RF_CDF_EC_03

                /**
                 * @desc    Verify that the IUT can successfully process Duplicate Detection AC-Request [Interim] where Session Based Charging is used
                 * @verdict pass on success, fail on error or inconc on timeout only 
                 */
                function f_TC_RF_CDF_EC_04() runs on DiameterRfRo {
                    // Local variables
                    var float v_interimTimer:=0.0;
                    var template ACR_MSG vt_aCR_T_flag;
                    // Preamble
                    f_preamble_Rf_CTF();
                    f_sendACR_awaitACA_(START_RECORD_E,3,1);
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    //set of timer
                    if (ispresent(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval)){
                        v_interimTimer := int2float(vc_recvDiamMsg.aCA_MSG.aCA_Body.acct_Interim_Interval.aVP_Data);
                    }
                    
                    //log("*** " & __SCOPE__ & ": INFO: Wait for",v_interimTimer,"s to send next ACR. ***");
                    //f_wait(v_interimTimer); // FIXME: uncomment if seems to be enable due to test of Duplicated request
                    
                    //preprare MSG template
                    vt_aCR_T_flag:= md_aCR(
	                    vc_sessionId, 
	                    md_acrBodyAvps_TypeOfCharging(
	                        vc_originHost,                 // containing an Origin-Host AVP
	                        vc_originRealm,                // containing an Origin-Realm AVP
	                        m_accounting_Record_Type(      // containing an Accounting-Record-Type AVP
	                            INTERIM_RECORD_E
	                        ),
	                        m_accounting_Record_Number(    // containing an Accounting-Record-Number AVP
	                            3                          //     indicating the value 3
	                        ),
	                        m_event_timestamp(1),
	                        m_service_Information_AVP_dummy // FIXME To be continue by creating a m_service_Information template modifying m_service_Information_AVP_dummy 
	                    )
	                );
                    //set T-bit to true - duplicated
                    vt_aCR_T_flag.header.cmdflags.t_bit := '1'B; 
                    
                    
                    f_send_ACR(valueof(vt_aCR_T_flag));
                    f_awaiting_ACA(
                        mdw_aCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            mdw_acaBodyAvps(
                                mw_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
                                mw_accounting_Record_Type(      // containing an Accounting-Record-Type AVP
                                    INTERIM_RECORD_E
                                ),
                                mw_accounting_Record_Number(    // containing an Acct-Application-Id AVP
                                    3                           //     indicating the value 3
                                )
                        ))
                    );

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


                    f_sendACR_awaitACA_(STOP_RECORD_E,3,1);
                    f_postamble_Rf_CTF();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); 
                   
                    
                } // End of function f_TC_RF_CDF_EC_04
                
                
            } // End of group ErrorCasses
            } // End of group ErrorCasses
            
            
        } // End of group TP_RF_CDF_Role
        } // End of group TP_RF_CDF_Role
+134 −0
Original line number Original line Diff line number Diff line
@@ -507,6 +507,140 @@ module DiameterRfRo_TestCases
                    
                    
                } // End of testcase TC_RF_CDF_EC_02
                } // End of testcase TC_RF_CDF_EC_02


                /**
                 * @desc    Verify that the IUT can successfully process Duplicate Detection AC-Request [Event] where Event Based Charging is used
                 * <pre>
                 * Pics Selection: PICS_CDF_IUT and PICS_EVENT_BASED_CHARGING
                 * Initial conditions: 
                 *     with {
                 *        
                 *     }
                 * Expected behaviour:
                 *     ensure that {
                 *        when {
                 *            the IUT receives an AC-Request 
                 *              containing Diameter-Header
                 *                  containing Command-Flags
                 *                      containing T-flag
                 *                          indicating value ‘1’
                 *              containing an Accounting-Record-Type AVP
                 *                  indicating EVENT_RECORD
                 *              containing an Event-Timestamp AVP 
                 *              containing optional Service-Information AVP
                 *                   containing at least one Subscription-ID AVP
                 *                      indicating the identification of the user
                 *                  containing optional IMS-Information AVP
                 *                      containing Node-Functionality AVP
                 *                          indicating the value 3
                 *                  containing optional Service-Generic-Information AVP
                 *                      indicating the service specific parameters
                 *              containing optional Service-Context-Id AVP
                 *        }
                 *        then {
                 *            the IUT sends a AC-Response 
                 *                containing a Session-ID AVP
                 *                containing a Result-Code AVP
                 *                    indicating DIAMETER_SUCCESS
                 *                not containing an Experimental-Result AVP
                 *                containing an Accounting-Record-Type AVP
                 *                    indicating EVENT_RECORD
                 *                containing an Accounting-Record-Number AVP
                 *        }
                 *    }
                 * </pre>
                 * 
                 * @version    0.0.15
                 * @see        ETSI DTS/INT 00121-2 V0.0.15 (2015-09) TP_RF_CDF_EC_03
                 */
                testcase TC_RF_CDF_EC_03() runs on DiameterRfRo system TestAdapter { 
                    // Local variables
                    var DiameterRfRo v_diameterRf_ctf;
                    // Test control
                    if (not (PICS_RF_CDF_IUT and PICS_EVENT_BASED_CHARGING)) {
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_CDF_IUT and PICS_EVENT_BASED_CHARGING' required for executing the TC. ***"); 
                        stop;
                    }
                    
                    // Test component configuration
                    f_cf_1Rf_ctfUp(v_diameterRf_ctf);
                    
                    // Start
                    v_diameterRf_ctf.start(f_TC_RF_CDF_EC_03());
                    
                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone});
                    
                    f_cf_1Rf_ctfDown(v_diameterRf_ctf);
                    
                } // End of testcase TC_RF_CDF_EC_03

                /**
                 * @desc    Verify that the IUT can successfully process Duplicate Detection AC-Request [Interim] where Session Based Charging is used
                 * <pre>
                 * Pics Selection: PICS_CDF_IUT and PICS_SESSION_BASED_CHARGING
                 * Initial conditions: 
                 *     with {
                 *        
                 *     }
                 * Expected behaviour:
                 *     ensure that {
                 *        when {
                 *            the IUT receives an AC-Request 
                 *              containing Diameter-Header
                 *                  containing Command-Flags
                 *                      containing T-flag
                 *                          indicating value ‘1’
                 *              containing an Accounting-Record-Type AVP
                 *                  indicating INTERIM_RECORD
                 *              containing an Event-Timestamp AVP 
                 *              containing optional Service-Information AVP
                 *                  containing at least one Subscription-ID AVP
                 *                      indicating the identification of the user
                 *                  containing optional IMS-Information AVP
                 *                      containing Node-Functionality AVP
                 *                          indicating the value 3
                 *                  may containing Service-Generic-Information AVP
                 *                      indicating the service specific parameters
                 *              containing optional Service-Context-Id AVP
                 *        }
                 *        then {
                 *            the IUT sends a AC-Response 
                 *                containing a Session-ID AVP
                 *                containing a Result-Code AVP
                 *                    indicating DIAMETER_SUCCESS
                 *                not containing an Experimental-Result AVP
                 *                containing an Accounting-Record-Type AVP
                 *                    indicating EVENT_RECORD
                 *                containing an Accounting-Record-Number AVP
                 *        }
                 *    }
                 * </pre>
                 * 
                 * @version    0.0.15
                 * @see        ETSI DTS/INT 00121-2 V0.0.15 (2015-09) TP_RF_CDF_EC_04
                 */
                testcase TC_RF_CDF_EC_04() runs on DiameterRfRo system TestAdapter { 
                    // Local variables
                    var DiameterRfRo v_diameterRf_ctf;
                    // Test control
                    if (not (PICS_RF_CDF_IUT and PICS_SESSION_BASED_CHARGING)) {
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_CDF_IUT and PICS_SESSION_BASED_CHARGING' required for executing the TC. ***"); 
                        stop;
                    }
                    
                    // Test component configuration
                    f_cf_1Rf_ctfUp(v_diameterRf_ctf);
                    
                    // Start
                    v_diameterRf_ctf.start(f_TC_RF_CDF_EC_04());
                    
                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(f_NrofComps(), {c_prDone, c_tbDone, c_poDone});
                    
                    f_cf_1Rf_ctfDown(v_diameterRf_ctf);
                    
                } // End of testcase TC_RF_CDF_EC_04
                
            } // End of group ErrorCasses
            } // End of group ErrorCasses
            
            
        } // End of group TP_RF_CDF_Role
        } // End of group TP_RF_CDF_Role
+3 −4
Original line number Original line Diff line number Diff line
@@ -6,7 +6,7 @@


module DiameterRfRo_TestControl {
module DiameterRfRo_TestControl {
    
    
    // DiameterS9
    // DiameterRfRo
    import from DiameterRfRo_PICS all;
    import from DiameterRfRo_PICS all;
    import from DiameterRfRo_TestCases all;
    import from DiameterRfRo_TestCases all;


@@ -18,8 +18,7 @@ module DiameterRfRo_TestControl {
            
            
            if (PICS_EVENT_BASED_CHARGING) {
            if (PICS_EVENT_BASED_CHARGING) {
                execute(TC_RF_CDF_TC_01());
                execute(TC_RF_CDF_TC_01());
                
                execute(TC_RF_CDF_EC_03());
                //execute(TC_RF_CDF_EC_03());
            }
            }
            if (PICS_SESSION_BASED_CHARGING) {
            if (PICS_SESSION_BASED_CHARGING) {
                execute(TC_RF_CDF_TC_02());
                execute(TC_RF_CDF_TC_02());
@@ -28,7 +27,7 @@ module DiameterRfRo_TestControl {
                
                
                execute(TC_RF_CDF_EC_01());
                execute(TC_RF_CDF_EC_01());
                execute(TC_RF_CDF_EC_02());
                execute(TC_RF_CDF_EC_02());
                //execute(TC_RF_CDF_EC_04());
                execute(TC_RF_CDF_EC_04());
            }
            }
        }
        }
        if (PICS_RF_CTF_IUT) {
        if (PICS_RF_CTF_IUT) {