Commit 92275095 authored by pintar's avatar pintar
Browse files

updated with new tests

parent da08663a
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -29,6 +29,11 @@ module DiameterRfRo_PICS {
         * @see  ETSI DTS/INT 00121-1 V0.0.6 (2015-07) A.3/1 
         */
        modulepar boolean PICS_EVENT_BASED_CHARGING := true;
        /**
         * @desc Does the IUT support session based charging? 
         * @see  ETSI DTS/INT 00121-1 V0.0.6 (2015-07) A.3/2 
         */
        modulepar boolean PICS_SESSION_BASED_CHARGING := true;
        
    } // End of group PICS_A3
    
+22 −8
Original line number Diff line number Diff line
@@ -118,7 +118,7 @@
            }
            
            f_DiameterRf_init();
            f_preambleDiameterBaseClient(c_applIdRf);//TODO change to Rf/Ro
            f_preambleDiameterBaseClient(c_applIdRfRo);
        }
        
        function f_preamble_Rf_CTF() runs on DiameterComponent
@@ -129,7 +129,7 @@
            }
            
            f_DiameterRf_init();
            f_preambleDiameterBaseServer(c_applIdRf);//TODO change to Rf/Ro
            f_preambleDiameterBaseServer(c_applIdRfRo);
        }
        
        function f_preamble_Ro_OCF() runs on DiameterComponent
@@ -140,7 +140,7 @@
            }
            
            f_DiameterRo_init();
            f_preambleDiameterBaseClient(c_applIdCommonMsg);//TODO change to Rf/Ro
            f_preambleDiameterBaseClient(c_applIdRfRo);
        }
        
        function f_preamble_Ro_CTF() runs on DiameterComponent
@@ -150,15 +150,28 @@
                f_preambleServer();
            }
            
            f_DiameterRf_init();
            f_preambleDiameterBaseServer(c_applIdCommonMsg);//TODO change to Rf/Ro
            f_DiameterRo_init();
            f_preambleDiameterBaseServer(c_applIdRfRo);
        }
        
    } // End of group Preambles

    group Postambles {
        
        function f_postamble_CTF() runs on DiameterComponent
        function f_postamble_Rf_CDF() runs on DiameterComponent
        {
            f_postambleDiameterBase();
            
            if(PX_DIAM_LLP_ENABLED)
            {
                f_postambleDisconnect();
            }
            
            // Deactivate defaults
            deactivate;
        }
        
        function f_postamble_Rf_CTF() runs on DiameterComponent
        {
            
            f_postambleDiameterBase();
@@ -172,7 +185,7 @@
            deactivate;
        }
        
        function f_postamble_CDF() runs on DiameterComponent
        function f_postamble_Ro_OCF() runs on DiameterComponent
        {
            f_postambleDiameterBase();
            
@@ -185,8 +198,9 @@
            deactivate;
        }
        
        function f_postamble_OCF() runs on DiameterComponent
        function f_postamble_Ro_CTF() runs on DiameterComponent
        {
            
            f_postambleDiameterBase();
            
            if(PX_DIAM_LLP_ENABLED)
+153 −84
Original line number Diff line number Diff line
@@ -36,17 +36,15 @@ module DiameterRfRo_TCFunctions {
                 * @desc    Verify that the IUT can successfully process all mandatory AVPs in an AC-Request received due to Charging Data Transfer
                 * @verdict pass on success, fail on error or inconc on timeout only 
                 */
                function f_TC_CDF_UL_01() runs on DiameterComponent { 
                function f_TC_CDF_MS_01() runs on DiameterRfRo { 
                    // Local variables
                    
                    // Preamble
                    f_preamble_Rf_CDF();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
                    f_preamble_Rf_CTF();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    // Test Body
                    // Clause 'when': the IUT receives an AC-Request
                    f_triggerAcRequest(
                    f_send_ACR(
                        md_aCR(
                            vc_sessionId, 
                            md_acrBodyAvps(
@@ -62,11 +60,7 @@ module DiameterRfRo_TCFunctions {
                        )
                    );

                    // Clause 'then': the IUT sends an AC-Response 
                    tc_wait.start;
                    alt {
                        [] DIAMP.receive(
                            mw_cdfAccountingResponse(
                    f_awaiting_ACA(
                        mdw_aCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            mdw_acaBodyAvps(
@@ -81,23 +75,52 @@ module DiameterRfRo_TCFunctions {
                                mw_accounting_Record_Number(    // containing an Acct-Application-Id AVP
                                    3                           //     indicating the value 3
                                )
                        )))) {
                            f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                            log("*** " & __SCOPE__ & ": PASS: Expected was received. ***");
                        }
                        [] tc_wait.timeout {
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                            log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***");
                        }
                    } // End of 'altstep' statement
                    
                    // Postamble
                    f_postamble_CTF();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                        ))
                    );

                    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_CDF_UL_01 
                } // End of function f_TC_CDF_MS_01 
                
                function f_TC_CDF_MS_02() runs on DiameterRfRo { 
                    // Local variables
                    
                    // Preamble
                    f_preamble_Rf_CTF();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_send_ACR(
                        md_aCR(
                            vc_sessionId, 
                            md_acrBodyAvps(
                                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
                                )
                            )
                        )
                    );

                    f_awaiting_ACA(
                        mw_ACA_MessageFlags
                    );

                    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_CDF_MS_02
            } // End of group messageSyntax
            
            // 5.2.2.1.3 Type of Charging
@@ -107,17 +130,15 @@ module DiameterRfRo_TCFunctions {
                 * @desc    Verify that the IUT can successfully process an 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_TC_01() runs on DiameterComponent { 
                function f_TC_RF_CDF_TC_01() runs on DiameterRfRo {
                    // Local variables
                    
                    // Preamble
                    f_preamble_Rf_CDF();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
                    f_preamble_Rf_CTF();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    // Test Body
                    // Clause 'when': the IUT receives an AC-Request
                    f_triggerAcRequest(
                    f_send_ACR(
                        md_aCR(
                            vc_sessionId, 
                            md_acrBodyAvps(
@@ -134,11 +155,7 @@ module DiameterRfRo_TCFunctions {
                        )
                    );

                    // Clause 'then': the IUT sends an AC-Response 
                    tc_wait.start;
                    alt {
                        [] DIAMP.receive(
                            mw_cdfAccountingResponse(
                    f_awaiting_ACA(
                        mdw_aCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            mdw_acaBodyAvps(
@@ -153,23 +170,75 @@ module DiameterRfRo_TCFunctions {
                                mw_accounting_Record_Number(    // containing an Acct-Application-Id AVP
                                    3                           //     indicating the value 3
                                )
                        )))) {
                            f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                            log("*** " & __SCOPE__ & ": PASS: Expected was received. ***");
                        }
                        [] tc_wait.timeout {
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                            log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***");
                        }
                    } // End of 'altstep' statement
                    
                    // Postamble
                    f_postamble_CTF();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                        ))
                    );

                    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_TC_01
                
                /**
                 * @desc    Verify that the IUT can successfully process an AC-Request [Start] where Session Based Charging is used
                 * @verdict pass on success, fail on error or inconc on timeout only 
                 */
                function f_TC_RF_CDF_TC_02() runs on DiameterRfRo {
                    // Local variables
                    
                    // Preamble
                    f_preamble_Rf_CTF();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_send_ACR(
                        md_aCR(
                            vc_sessionId, 
                            md_acrBodyAvps_TypeOfCharging_Session(
                                vc_originHost,                 // containing an Origin-Host AVP
                                vc_originRealm,                // containing an Origin-Realm AVP
                                m_accounting_Record_Type(      // containing an Accounting-Record-Type AVP
                                    START_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 
                            )
                        )
                    );

                    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
                                    START_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_TC_02  
                
            } // End of group TypeOfCharging
            
        } // End of group TP_RF_CDF_Role 
+43 −0
Original line number Diff line number Diff line
@@ -34,6 +34,11 @@ module DiameterRfRo_Templates {

    group HeaderFieldTemplates {


        template DiameterHeader mw_diameterHeaderAns_CmdFlags(Command_Code p_cmdcode, template (present) UInt32 p_applid, template (present) Command_Flags p_commandFlags) modifies mw_diameterHeaderAns_dummy := {
            cmdflags := p_commandFlags
        }
        
        /**
         * @desc Received generic command flag template
         */
@@ -53,6 +58,14 @@ module DiameterRfRo_Templates {
            t_bit           := '1'B // T message
        } // End of template mw_cmdTFlagsAns
        
        /**
         * @desc Received generic command flag template
         */
        template (present) Command_Flags mw_cmd_0TFlagsAns 
        modifies mw_cmdFlagsAns := {
            t_bit           := '0'B // !T message
        } // End of template mw_cmdTFlagsAns
        
        template AVP_Header mw_aVP_HeaderVid_Vbit1Mbit0 ( AVP_Code p_avpCode, template (present) AVP_Vendor_ID p_avpVid ) := {
            aVP_Code     := p_avpCode,
            aVP_flags     := mw_avpFlags_VMbits('1'B, '0'B),
@@ -303,10 +316,35 @@ module DiameterRfRo_Templates {
    			    service_Information_AVP    := p_service_Information
            } // End of template md_acrBodyAvps
            
            /**
	         * @desc Send template for ACR message body
	         */
            template (omit) ACR_Body_AVP md_acrBodyAvps_TypeOfCharging_Session(
                                                        in template (value) Origin_Host_AVP              p_originHost,
                                                        in template (value) Origin_Realm_AVP             p_originRealm,
                                                        in template (value) Accounting_Record_Type_AVP   p_accounting_Record_Type,
                                                        in template (value) Accounting_Record_Number_AVP p_accounting_Record_Number,
                                                        in template (omit) Event_Timestamp_AVP           p_event_Timestamp := omit,
                                                        in template (omit) Service_Information_AVP       p_service_Information := omit
            ) modifies m_rf_ACR_Body_dummy := {
                    origin_Host                 := p_originHost,
                    origin_Realm                := p_originRealm,
                    accounting_Record_Type      := p_accounting_Record_Type,
                    accounting_Record_Number    := p_accounting_Record_Number,
                    event_Timestamp             := p_event_Timestamp,
                    service_Information_AVP    := p_service_Information
            } // End of template md_acrBodyAvps_TypeOfCharging_Session
            
        } // End of group Rf_request_message_templates_send 
        
        group Rf_answer_message_templates_receive { 
            
            template ACA_MSG mw_ACA_MessageFlags modifies mw_ACA_dummy := {
                header :=  mw_diameterHeaderAns_CmdFlags(ACA_E, ?, mw_cmd_0TFlagsAns),
                session_Id := ?,
                aCA_Body := mw_ACA_Body_dummy
            }
            
            /**
             * @desc Main receive message for CDF_Rf port
             * @param p_aCA_MSG AC-Answer message
@@ -656,6 +694,11 @@ module DiameterRfRo_Templates {
                address_AVP := p_address_AVP
            } // End of template m_cg_Address_AVP
            
            template (value) Event_Timestamp_AVP m_event_timestamp (UInt32 p_data_AVP) := {
                aVP_Header  := m_aVP_HeaderVid_Mbit1(c_event_Timestamp_AVP_Code, 4, omit),
                aVP_Data := p_data_AVP
            } // End of template m_cg_Address_AVP
            
            /**
             * @desc The GGSN-Address send template 
             * @param p_address_AVP    Holds the IP-address of the P-GW that generated the GPRS/EPC Charging ID
+132 −8

File changed.

Preview size limit exceeded, changes collapsed.