Loading DiameterRfRo/ttcn/DiameterRfRo_TCFunctions.ttcn +154 −7 Original line number Diff line number Diff line Loading @@ -10,8 +10,7 @@ module DiameterRfRo_TCFunctions { import from LibCommon_VerdictControl all ; // LibDiameter //import from Diameter_PIXITS all; import from LibDiameter_PIXITS all; import from LibDiameter_TypesAndValues all; import from LibDiameter_Types_Base_AVPs all; import from LibDiameter_Types_RfRo_AVPs all; Loading Loading @@ -250,14 +249,20 @@ module DiameterRfRo_TCFunctions { */ function f_TC_RF_CDF_TC_03() runs on DiameterRfRo { // Local variables var float v_interimTimer:=0.0; // 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); f_send_ACR( md_aCR( vc_sessionId, Loading Loading @@ -371,7 +376,6 @@ module DiameterRfRo_TCFunctions { //5.2.2.1.4 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. * @verdict pass on success, fail on error or inconc on timeout only Loading @@ -388,7 +392,7 @@ module DiameterRfRo_TCFunctions { 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{ // 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 Loading Loading @@ -421,14 +425,23 @@ module DiameterRfRo_TCFunctions { */ function f_TC_RF_CDF_EC_02() runs on DiameterRfRo { // Local variables var float v_sessionAbortTimer:=0.0; // Preamble f_preamble_Rf_CTF(); f_sendACR_awaitACA_(START_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 log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_wait(v_sessionAbortTimer); f_awaiting_ASR( mdw_aSR( vc_sessionId, // containing a Session-ID AVP Loading @@ -448,6 +461,140 @@ module DiameterRfRo_TCFunctions { } // 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 TP_RF_CDF_Role Loading DiameterRfRo/ttcn/DiameterRfRo_TestCases.ttcn +134 −0 Original line number Diff line number Diff line Loading @@ -507,6 +507,140 @@ module DiameterRfRo_TestCases } // 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 TP_RF_CDF_Role Loading DiameterRfRo/ttcn/DiameterRfRo_TestControl.ttcn +3 −4 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ module DiameterRfRo_TestControl { // DiameterS9 // DiameterRfRo import from DiameterRfRo_PICS all; import from DiameterRfRo_TestCases all; Loading @@ -18,8 +18,7 @@ module DiameterRfRo_TestControl { if (PICS_EVENT_BASED_CHARGING) { execute(TC_RF_CDF_TC_01()); //execute(TC_RF_CDF_EC_03()); execute(TC_RF_CDF_EC_03()); } if (PICS_SESSION_BASED_CHARGING) { execute(TC_RF_CDF_TC_02()); Loading @@ -28,7 +27,7 @@ module DiameterRfRo_TestControl { execute(TC_RF_CDF_EC_01()); execute(TC_RF_CDF_EC_02()); //execute(TC_RF_CDF_EC_04()); execute(TC_RF_CDF_EC_04()); } } if (PICS_RF_CTF_IUT) { Loading Loading
DiameterRfRo/ttcn/DiameterRfRo_TCFunctions.ttcn +154 −7 Original line number Diff line number Diff line Loading @@ -10,8 +10,7 @@ module DiameterRfRo_TCFunctions { import from LibCommon_VerdictControl all ; // LibDiameter //import from Diameter_PIXITS all; import from LibDiameter_PIXITS all; import from LibDiameter_TypesAndValues all; import from LibDiameter_Types_Base_AVPs all; import from LibDiameter_Types_RfRo_AVPs all; Loading Loading @@ -250,14 +249,20 @@ module DiameterRfRo_TCFunctions { */ function f_TC_RF_CDF_TC_03() runs on DiameterRfRo { // Local variables var float v_interimTimer:=0.0; // 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); f_send_ACR( md_aCR( vc_sessionId, Loading Loading @@ -371,7 +376,6 @@ module DiameterRfRo_TCFunctions { //5.2.2.1.4 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. * @verdict pass on success, fail on error or inconc on timeout only Loading @@ -388,7 +392,7 @@ module DiameterRfRo_TCFunctions { 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{ // 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 Loading Loading @@ -421,14 +425,23 @@ module DiameterRfRo_TCFunctions { */ function f_TC_RF_CDF_EC_02() runs on DiameterRfRo { // Local variables var float v_sessionAbortTimer:=0.0; // Preamble f_preamble_Rf_CTF(); f_sendACR_awaitACA_(START_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 log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_wait(v_sessionAbortTimer); f_awaiting_ASR( mdw_aSR( vc_sessionId, // containing a Session-ID AVP Loading @@ -448,6 +461,140 @@ module DiameterRfRo_TCFunctions { } // 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 TP_RF_CDF_Role Loading
DiameterRfRo/ttcn/DiameterRfRo_TestCases.ttcn +134 −0 Original line number Diff line number Diff line Loading @@ -507,6 +507,140 @@ module DiameterRfRo_TestCases } // 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 TP_RF_CDF_Role Loading
DiameterRfRo/ttcn/DiameterRfRo_TestControl.ttcn +3 −4 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ module DiameterRfRo_TestControl { // DiameterS9 // DiameterRfRo import from DiameterRfRo_PICS all; import from DiameterRfRo_TestCases all; Loading @@ -18,8 +18,7 @@ module DiameterRfRo_TestControl { if (PICS_EVENT_BASED_CHARGING) { execute(TC_RF_CDF_TC_01()); //execute(TC_RF_CDF_EC_03()); execute(TC_RF_CDF_EC_03()); } if (PICS_SESSION_BASED_CHARGING) { execute(TC_RF_CDF_TC_02()); Loading @@ -28,7 +27,7 @@ module DiameterRfRo_TestControl { execute(TC_RF_CDF_EC_01()); execute(TC_RF_CDF_EC_02()); //execute(TC_RF_CDF_EC_04()); execute(TC_RF_CDF_EC_04()); } } if (PICS_RF_CTF_IUT) { Loading