/** * @author STF 490 * @version $Id$ * @desc This module provides SIP/IMS test functions used by the test cases * for IMS-DIAMETER tests. Test functions comes from TS 102 790 standard * and are modified due to new LibIms/LibSip library V3.X.X. All tests are * adopted with new sinchronization points due to Rf/Ro TSS/TP test specifications. */ module DiameterRfRo_SIP_TCFunctions { //LibCommon import from LibCommon_Sync all ; //LibSip import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; import from LibSip_Steps all; import from LibSip_Interface all; import from LibSip_PIXITS all; import from LibSip_Common all; //LibIms import from LibIms_Templates all; import from LibIms_Steps all; import from LibIms_Interface all; // DiameterRfRo import from DiameterRfRo_SIP_Templates all; import from DiameterRfRo_PIXITS all; group TP_RF_Role { // 5.2.2.2. CTF Role group TP_RF_CTF_Role { // 5.2.2.2.2 Message Syntax group TP_RF_CTF_MS { //Add SIP functions if needed } // End of group TP_RF_CTF_MS_Role // 5.2.2.2.3 Type of Charging group TP_RF_CTF_TC { /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_01_VA1 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_UE1 * @param p_cSeq_s */ function f_TC_CTF_TC_UE_01_VA1(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration(p_cSeq_s, v_register);//TODO - delete when test is validated //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body // prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendMESSAGE(m_MESSAGE_Request_MBody_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, vc_route_REG, omit, m_mBody_plainText("Hello!")));//vc_route is set after 200OkRegister from ServiceRoute: if not then vc_route need to be preparee in set_header function:( f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); // await response - 200 OK ... f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_UE_01_VA1 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_01_VA1 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_IMS * @param p_cSeq_s */ function f_TC_CTF_TC_CSCF_01_VA1(in CSeq p_cSeq_s) runs on ImsComponent { f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_IMS_preamble_woRegistration(p_cSeq_s);//TODO - delete when test is validated - //used to be profile c_userProfile_ICSCFwithHomeUE, //TODO - delete when test is validated - //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_SCSCF); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Testbody //Awaiting MESSAGE f_awaitingMESSAGE(mw_MESSAGE_Request_PchargingVector("icid-value",?)); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_send200OK(); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //Postamble f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_IMS1_withoutRegistration(); } // end function f_TC_CTF_TC_CSCF_01_VA1 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_01_VA2 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_UE1 * @param p_cSeq_s */ function f_TC_CTF_TC_UE_01_VA2(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting //TODO - delete when test is validated //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, // Variables & defaults initialization f_IMS_preamble_woRegistration(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); // Preamble f_Registration(p_cSeq_s, v_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED); // deregistration in case of successful registration vc_DeregDone := false; f_setHeaders_SUBSCRIBE(p_cSeq_s); f_Subscription(p_cSeq_s, m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_route_REG)); // Test Body // prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendMESSAGE(m_MESSAGE_Request_MBody_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, vc_route_REG, omit, m_mBody_plainText("Hello!")));//vc_route is set after 200OkRegister from ServiceRoute: if not then vc_route need to be preparee in set_header function:( // await response - 200 OK ... f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_UE_01_VA2 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_01_VA2 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_IMS * @param p_cSeq_s */ function f_TC_CTF_TC_CSCF_01_VA2(in CSeq p_cSeq_s) runs on ImsComponent { f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_IMS_preamble_woRegistration(p_cSeq_s);//TODO - delete when test is validated - //used to be profile c_userProfile_ICSCFwithHomeUE, //TODO - delete when test is validated - //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_SCSCF); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Testbody //Awaiting MESSAGE f_awaitingMESSAGE(mw_MESSAGE_Request_PchargingVector("icid-value",?)); f_send200OK(); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //Postamble f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_IMS1_withoutRegistration(); } // end function f_TC_CTF_TC_CSCF_01_VA2 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_01_VA3 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_UE1 * @param p_cSeq_s */ function f_TC_CTF_TC_UE_01_VA3(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting //TODO - delete when test is validated //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, // Variables & defaults initialization f_IMS_preamble_woRegistration(p_cSeq_s); // Preamble f_Registration(p_cSeq_s, v_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // deregistration in case of successful registration vc_DeregDone := false; f_setHeaders_SUBSCRIBE(p_cSeq_s); // send SUBSCRIBE f_SendSUBSCRIBE(m_SUBSCRIBE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, vc_route_REG)); // awaiting 200 OK SUBSCRIBE f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); // await NOTIFY and send reply 200 OK f_awaitingOkResponseAndNOTIFY_sendReply(p_cSeq_s, mw_NOTIFY_Request_Base(vc_callId)); // Test Body // prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendMESSAGE(m_MESSAGE_Request_MBody_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, vc_route_REG, omit, m_mBody_plainText("Hello!")));//vc_route is set after 200OkRegister from ServiceRoute: if not then vc_route need to be preparee in set_header function:( // await response - 200 OK ... f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_UE_01_VA3 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_01_VA3 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_03_IMS * @param p_cSeq_s */ function f_TC_CTF_TC_CSCF_01_VA3(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_CSCF_01_VA2(p_cSeq_s); } // end function f_TC_CTF_TC_CSCF_01_VA3 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_01_VA4 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_SUB_03_UE1 * @param p_cSeq_s */ function f_TC_CTF_TC_UE_01_VA4(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration( p_cSeq_s, v_register);//c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body // await SUBSCRIBE //UE2 has established a SUBSCRIBE dialog with UE1 //f_awaitingSUBSCRIBE(mw_SUBSCRIBE_Request_Base); //f_sendResponse(m_Response_2xxonSUBSCRIBE_UE(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact)); //send PUBLISH // PUBLISH UE1 f_setHeadersPUBLISH(cSeq, To, From) and send PUBLISH LibIms_Steps.f_setHeadersPUBLISH(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendPUBLISH(m_PUBLISH_Request_UE(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Event_presence, omit, m_mBody_plainText("I'M PRESENT!"),vc_route_REG)); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_UE_01_VA4 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_01_VA4 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_SUB_03_IMS * @param p_cSeq_s */ function f_TC_CTF_TC_CSCF_01_VA4(in CSeq p_cSeq_s) runs on ImsComponent { f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_IMS_preamble_woRegistration( p_cSeq_s);//c_userProfile_ICSCFwithHomeUE, //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_SCSCF); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Testbody f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); // await PUBLISH f_awaitingPUBLISH_sendReply(mw_PUBLISH_Request_PchargingVector(?,mw_pChargingVector(c_icid,?))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // POSTAMBLE f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_IMS1_withoutRegistration(); } // end function f_TC_CTF_TC_CSCF_01_VA4 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_02 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1 * @param p_cSeq_s */ function f_TC_CTF_TC_UE_02(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration(p_cSeq_s, v_register); //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body // INVITE UE1 f_setHeadersINVITE(cSeq, To, From) amd send INVITE LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, valueof(m_MBody_SDP(vc_sdp_local)))); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); //await response - 200 ... f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq)); // send ACK LibSip_Steps.f_setHeadersACK(); f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_route)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE //send BYE await response f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_UE_02 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_02 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS * @param p_cSeq_s */ function f_TC_CTF_TC_CSCF_02(in CSeq p_cSeq_s) runs on ImsComponent { var REGISTER_Request v_register; f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_IMS_preamble_woRegistration(p_cSeq_s); //c_userProfile_ICSCFwithHomeUE, //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_SCSCF); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // await INVITE UE1@SUT f_awaitingINVITE(mw_INVITE_Request_noPChargingFunction); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); //send response - 200 f_sendResponse(m_Response_2xxonINVITE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_addNewRecordRouteIMS(valueof(vc_recordRoute)), valueof(m_MBody_SDP(vc_sdp_local)))); // Test Body // await ACK f_awaitingACK(mdw_ACK_Request_noPchargingVector(vc_callId)); // P-Charging-Function-Addresses does not pass network border f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE //await BYE and send 200OK f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId)); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_CSCF_02 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_03 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1 * @param p_cSeq_s */ function f_TC_CTF_TC_UE_03(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration(p_cSeq_s, v_register); //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body // INVITE UE1 f_setHeadersINVITE(cSeq, To, From) amd send INVITE LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, valueof(m_MBody_SDP(vc_sdp_local)))); //await response - 200 ... f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq)); // send ACK LibSip_Steps.f_setHeadersACK(); f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_route)); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE //send BYE await response f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_UE_03 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_03 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS * @param p_cSeq_s */ function f_TC_CTF_TC_CSCF_03(in CSeq p_cSeq_s) runs on ImsComponent { var REGISTER_Request v_register; f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_IMS_preamble_woRegistration(p_cSeq_s); //c_userProfile_ICSCFwithHomeUE, //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_SCSCF); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // await INVITE UE1@SUT f_awaitingINVITE(mw_INVITE_Request_noPChargingFunction); //send response - 200 f_sendResponse(m_Response_2xxonINVITE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_addNewRecordRouteIMS(valueof(vc_recordRoute)), valueof(m_MBody_SDP(vc_sdp_local)))); // Test Body // await ACK f_awaitingACK(mdw_ACK_Request_noPchargingVector(vc_callId)); // P-Charging-Function-Addresses does not pass network border f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE //await BYE and send 200OK f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId)); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_CSCF_03 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_04 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_TAR_03_UE1 * @param p_cSeq_s */ function f_TC_CTF_TC_UE_04(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration(p_cSeq_s, v_register); //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body // INVITE UE1 f_setHeadersINVITE(cSeq, To, From) amd send INVITE LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, m_MBody_SDP(vc_sdp_local))); // await response - 200 ... f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq)); // send ACK LibSip_Steps.f_setHeadersACK(); f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_route)); // Send reINVITE LibIms_Steps.f_setHeadersReINVITE(p_cSeq_s, true, vc_requestUri);//TODO:vc_requestUri need to be set for TO field---//, c_userProfile_ICSCFwithHomeUE f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, omit, m_MBody_SDP(vc_sdp_local))); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); // await response - 200 f_awaitingResponse(mw_Response_Base((c_statusLine200),vc_callId, vc_cSeq)); // send ACK LibSip_Steps.f_setHeadersACK(); f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_route)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send original BYE await response to clean the session f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_UE_04 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_04 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_TAR_03_IMS * @param p_cSeq_s */ function f_TC_CTF_TC_CSCF_04(in CSeq p_cSeq_s) runs on ImsComponent { f_IMS_preamble_woRegistration(p_cSeq_s);//c_userProfile_ICSCFwithHomeUE, f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // await INVITE UE1@SUT f_awaitingINVITE(mw_INVITE_Request_Base); // no specific constraints in TP //send response - 200 f_sendResponse(m_Response_2xxonINVITE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_addNewRecordRouteIMS(valueof(vc_recordRoute)), valueof(m_MBody_SDP(vc_sdp_local)))); // await ACK f_awaitingACK(mw_ACK_Request_Base(vc_callId)); //await REINVITE UE1@SUT f_awaitingINVITE(mw_INVITE_Request_Base); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_sendResponse(m_Response_2xxonINVITE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_addNewRecordRouteIMS(valueof(vc_recordRoute)), valueof(m_MBody_SDP(vc_sdp_local)))); // await ACK f_awaitingACK(mw_ACK_Request_Base(vc_callId)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done //await BYE and send 200OK f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId)); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_CSCF_04 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_TC_UE_05 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1 * @param p_cSeq_s */ function f_TC_CTF_TC_UE_05(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration(p_cSeq_s, v_register); //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body // INVITE UE1 f_setHeadersINVITE(cSeq, To, From) amd send INVITE LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendINVITE(m_INVITE_Request_UE(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, vc_route_REG, omit, valueof(m_MBody_SDP(vc_sdp_local)))); //await response - 200 ... f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq)); // send ACK LibSip_Steps.f_setHeadersACK(); f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_route)); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); //send BYE await response f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_UE_05 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_TC_CSCF_05 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS * @param p_cSeq_s */ function f_TC_CTF_TC_CSCF_05(in CSeq p_cSeq_s) runs on ImsComponent { var REGISTER_Request v_register; f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_IMS_preamble_woRegistration(p_cSeq_s); //c_userProfile_ICSCFwithHomeUE, //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_SCSCF); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // await INVITE UE1@SUT f_awaitingINVITE(mw_INVITE_Request_noPChargingFunction); //send response - 200 f_sendResponse(m_Response_2xxonINVITE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_addNewRecordRouteIMS(valueof(vc_recordRoute)), valueof(m_MBody_SDP(vc_sdp_local)))); // Test Body // await ACK f_awaitingACK(mdw_ACK_Request_noPchargingVector(vc_callId)); // P-Charging-Function-Addresses does not pass network border f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); //await BYE and send 200OK f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_CTF_TC_CSCF_05 } // End of group TP_RF_CTF_TC_Role // 5.2.2.2.4 Error cases group TP_RF_CTF_EC { /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_01 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1 * @param p_cSeq_s */ function f_TC_CTF_EC_UE_01(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_UE_02(p_cSeq_s); } // end function f_TC_CTF_EC_UE_01 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_01 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS * @param p_cSeq_s */ function f_TC_CTF_EC_CSCF_01(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_CSCF_02(p_cSeq_s); } // end function f_TC_CTF_EC_CSCF_1 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_02 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1 * @param p_cSeq_s */ function f_TC_CTF_EC_UE_02(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_UE_03(p_cSeq_s); } // end function f_TC_CTF_EC_UE_02 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_02 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS * @param p_cSeq_s */ function f_TC_CTF_EC_CSCF_02(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_CSCF_03(p_cSeq_s); } // end function f_TC_CTF_EC_CSCF_02 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_03 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1 * @param p_cSeq_s */ function f_TC_CTF_EC_UE_03(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_UE_03(p_cSeq_s); } // end function f_TC_CTF_EC_UE_03 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_03 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS * @param p_cSeq_s */ function f_TC_CTF_EC_CSCF_03(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_CSCF_03(p_cSeq_s); } // end function f_TC_CTF_EC_CSCF_03 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_04 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1 * @param p_cSeq_s */ function f_TC_CTF_EC_UE_04(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_UE_03(p_cSeq_s); } // end function f_TC_CTF_EC_UE_04 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_04 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS * @param p_cSeq_s */ function f_TC_CTF_EC_CSCF_04(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_CSCF_03(p_cSeq_s); } // end function f_TC_CTF_EC_CSCF_04 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_05 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1 * @param p_cSeq_s */ function f_TC_CTF_EC_UE_05(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_UE_03(p_cSeq_s); } // end function f_TC_CTF_EC_UE_05 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_05 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS * @param p_cSeq_s */ function f_TC_CTF_EC_CSCF_05(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_CSCF_03(p_cSeq_s); } // end function f_TC_CTF_EC_CSCF_05 /** * @desc This is the test case function (SIP originating side - UE1) for TC_CTF_EC_UE_06 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_UE1 * @param p_cSeq_s */ function f_TC_CTF_EC_UE_06(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_UE_03(p_cSeq_s); } // end function f_TC_CTF_EC_UE_06 /** * @desc This is the test case function (Mw interface - IUT P-CSCF) for TC_CTF_EC_CSCF_06 * Test function is adopted and comes from TS 102 790 - TC_IMST2_MW_GEN_08_IMS * @param p_cSeq_s */ function f_TC_CTF_EC_CSCF_06(in CSeq p_cSeq_s) runs on ImsComponent { f_TC_CTF_TC_CSCF_03(p_cSeq_s); } // end function f_TC_CTF_EC_CSCF_06 } // End of group TP_RF_CTF_EC_Role { } // End of group TP_RF_CTF_Role } // End of group TP_RF_Role group TP_RO_Role { //5.2.3.2. CTF Role group TP_RO_CTF_Role { // 5.2.3.2.2 Message Syntax group TP_RO_CTF_MS { } // End of group TP_RO_CTF_MS // 5.2.3.2.3 Type of Charging group TP_RO_CTF_TC { /** * @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_TC_UE_01 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_UE1 * @param p_cSeq_s */ function f_TC_RO_CTF_TC_UE_01(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration(p_cSeq_s, v_register); //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body //Awaiting MESSAGE f_awaitingMESSAGE(mw_MESSAGE_Request_noPchargingFunction_UE); f_send200OK(); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_RO_CTF_TC_UE_01 /** * @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_TC_CSCF_01 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_IMS * @param p_cSeq_s */ function f_TC_RO_CTF_TC_CSCF_01(in CSeq p_cSeq_s) runs on ImsComponent { var GenValue v_genValue := {tokenOrHost := "host"}; f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_IMS_preamble_woRegistration( p_cSeq_s); //c_userProfile_SCSCFwithHomeUE, //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_ICSCF); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Testbody // prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendMESSAGE(m_MESSAGE_Request_PCharging_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue))); // await response - 200 OK ... f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //Postamble f_SIP_postamble_IMS1_withoutRegistration(); } // end function f_TC_RO_CTF_TC_CSCF_01 /** * @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_TC_UE_06 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_UE1 * @param p_cSeq_s */ function f_TC_RO_CTF_TC_UE_06(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration(p_cSeq_s, v_register); //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body //Awaiting MESSAGE f_awaitingMESSAGE(mw_MESSAGE_Request_noPchargingFunction_UE); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_send200OK(); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_RO_CTF_TC_UE_06 /** * @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_TC_CSCF_06 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_IMS * @param p_cSeq_s */ function f_TC_RO_CTF_TC_CSCF_06(in CSeq p_cSeq_s) runs on ImsComponent { var GenValue v_genValue := {tokenOrHost := "host"}; f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_IMS_preamble_woRegistration( p_cSeq_s); //c_userProfile_SCSCFwithHomeUE, //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_ICSCF); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Testbody // prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendMESSAGE(m_MESSAGE_Request_PCharging_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue))); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); // await response - 200 OK ... f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //Postamble f_SIP_postamble_IMS1_withoutRegistration(); } // end function f_TC_RO_CTF_TC_CSCF_06 /** * @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_TC_UE_08 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_07_UE1 * @param p_cSeq_s */ function f_TC_RO_CTF_TC_UE_08(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration(p_cSeq_s, v_register);//c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body //Awaiting INVITE f_awaitingINVITE(mw_INVITE_Request_noPChargingFunction); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200,vc_callId, vc_cSeq,vc_caller_From, vc_caller_To, vc_via,vc_contact,f_recordroute(),valueof(m_MBody_SDP(vc_sdp_local)))); // await ACK f_awaitingACK(mw_ACK_Request_Base(vc_callId)); f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());// sync point sync2 //await BYE and send 200OK f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_RO_CTF_TC_UE_08 /** * @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_TC_CSCF_08 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_07_IMS * @param p_cSeq_s */ function f_TC_RO_CTF_TC_CSCF_08(in CSeq p_cSeq_s) runs on ImsComponent { var REGISTER_Request v_register; var GenValue v_genValue := {tokenOrHost := "host"}; f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_IMS_preamble_woRegistration( p_cSeq_s);//c_userProfile_SCSCFwithHomeUE, //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_ICSCF); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // INVITE UE1 f_setHeadersINVITE(cSeq, To, From) amd send INVITE LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, vc_contact, omit, omit/* vc_route*/, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue), valueof(m_MBody_SDP(vc_sdp_local)))); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); //await response - 200 f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq)); // send ACK LibSip_Steps.f_setHeadersACK(); f_SendACK(m_ACK_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_route)); f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());// sync point sync2 //send BYE and await 200OK f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE f_SIP_postamble_IMS1_withoutRegistration(); } // end function f_TC_RO_CTF_TC_CSCF_08 } // End of group TP_RO_CTF_TC // 5.2.3.2.4 Error Casses group TP_RO_CTF_EC { } // End of group TP_RO_CTF_EC // 5.2.3.2.5 Tariff Changes group TP_RO_CTF_CH { } // End of group TP_RO_CTF_CH // 5.2.3.2.6 Re-Authorization group TP_RO_CTF_RE { } // End of group TP_RO_CTF_RE // 5.2.3.2.7 Failure Handling group TP_RO_CTF_FH { /** * @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_FH_UE_01 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_UE1 * @param p_cSeq_s */ function f_TC_RO_CTF_FH_UE_01(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration(p_cSeq_s, v_register); //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body //Awaiting MESSAGE f_awaitingMESSAGE(mw_MESSAGE_Request_noPchargingFunction_UE); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());// sync point sync2 f_send200OK(); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_RO_CTF_FH_UE_01 /** * @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_FH_CSCF_01 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_IMS * @param p_cSeq_s */ function f_TC_RO_CTF_FH_CSCF_01(in CSeq p_cSeq_s) runs on ImsComponent { var GenValue v_genValue := {tokenOrHost := "host"}; f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_IMS_preamble_woRegistration( p_cSeq_s); //c_userProfile_SCSCFwithHomeUE, //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_ICSCF); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Testbody // prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendMESSAGE(m_MESSAGE_Request_PCharging_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue))); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());// sync point sync2 // await response - 200 OK ... f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //Postamble f_SIP_postamble_IMS1_withoutRegistration(); } // end function f_TC_RO_CTF_FH_CSCF_01 /** * @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_FH_UE_02 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_UE1 * @param p_cSeq_s */ function f_TC_RO_CTF_FH_UE_02(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration(p_cSeq_s, v_register); //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body //Awaiting MESSAGE f_awaitingMESSAGE(mw_MESSAGE_Request_noPchargingFunction_UE); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_send200OK(); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_RO_CTF_FH_UE_02 /** * @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_FH_CSCF_02 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_IMS * @param p_cSeq_s */ function f_TC_RO_CTF_FH_CSCF_02(in CSeq p_cSeq_s) runs on ImsComponent { var GenValue v_genValue := {tokenOrHost := "host"}; f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_init_userprofile(c_userProfile_UE1atSUThome); f_IMS_preamble_woRegistration( p_cSeq_s); //c_userProfile_SCSCFwithHomeUE, //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_ICSCF); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Testbody // prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendMESSAGE(m_MESSAGE_Request_PCharging_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue))); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); // await response - 200 OK ... f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //Postamble f_SIP_postamble_IMS1_withoutRegistration(); } // end function f_TC_RO_CTF_FH_CSCF_02 } // End of group TP_RO_CTF_FH // 5.2.3.2.8 Failover group TP_RO_CTF_FA { /** * @desc This is the test case function (SIP terminating side - UE1) for f_TC_RO_CTF_FA_UE_02 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_UE1 * @param p_cSeq_s */ function f_TC_RO_CTF_FA_UE_02(in CSeq p_cSeq_s) runs on ImsComponent { var template REGISTER_Request v_register; f_init_userprofile(c_userProfile_UE1atSUThome); v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); // preamble with send REGISTER, await 401, send REGISTER, await 200 OK and user profile setting f_IMS_preamble_withRegistration(p_cSeq_s, v_register); //c_userProfile_UE1atSUThome, c_interfaceProfile_IMS_SUT_PCSCF1, f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Test Body //Awaiting MESSAGE f_awaitingMESSAGE(mw_MESSAGE_Request_noPchargingFunction_UE); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict()); f_send200OK(); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());// sync point test body done // POSTAMBLE // send REGISTER, await 401, send REGISTER, await 200 OK f_RemoveRegistration(vc_cSeq); // deregistration in SUT f_SIP_postamble_UE_withoutRegistration(); } // end function f_TC_RO_CTF_FA_UE_02 /** * @desc This is the test case function (SIP originating side - CSCF) for f_TC_RO_CTF_FA_CSCF_02 * Test function is adopted and comes from TS 102 790 - f_TC_IMST2_MW_GEN_09_IMS * @param p_cSeq_s */ function f_TC_RO_CTF_FA_CSCF_02(in CSeq p_cSeq_s) runs on ImsComponent { var GenValue v_genValue := {tokenOrHost := "host"}; f_init_userprofile(c_userProfile_ICSCFwithHomeUE); f_IMS_preamble_woRegistration( p_cSeq_s); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // Testbody // prepare f_setHeadersMESSAGE(cSeq, To, From) and send MESSAGE LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome), f_initSipUrl(vc_userprofile.id)); f_SendMESSAGE(m_MESSAGE_Request_PCharging_IMS(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via, omit, omit, omit, m_pChargingVector_origIoi_fixedValue(v_genValue))); f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict()); // await response - 200 OK ... f_awaitingResponse(mw_Response_Base (c_statusLine200,vc_callId, vc_cSeq)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //Postamble f_SIP_postamble_IMS1_withoutRegistration(); } // end function f_TC_RO_CTF_FA_CSCF_02 } // End of group TP_RO_CTF_FA // 5.2.3.2.9 Credit Pooling group TP_RO_CTF_CP { } // End of group TP_RO_CTF_CP // 5.2.3.2.10 Other Procedures group TP_RO_CTF_OP { } // End of group TP_RO_CTF_OP }//End of group TP_RO_CTF_Role } // End of group TP_RO_Role group UserProfiles{ /* * * @desc sets user parameters with PIXIT values * @param p_user identifies the selected user configuration and location * @verdict */ function f_init_userprofile(in integer p_user) runs on ImsComponent { vc_userprofile.id := p_user; select(p_user){ case (c_userProfile_UE1atSUThome) { //variant c_userProfile_UE1atSUThome vc_userprofile.currPort := PX_DIAMETER_GM_ETS_UE_PORT; vc_userprofile.currIpaddr := PX_DIAMETER_GM_ETS_UE_IPADDR; vc_userprofile.contactPort := PX_DIAMETER_GM_ETS_UE_PORT; vc_userprofile.contactIpaddr := PX_DIAMETER_GM_ETS_UE_IPADDR; vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; } // case (c_userProfile_UE2atSUThome) { //variant c_userProfile_UE2atSUThome // vc_userprofile.currPort := PX_IMS_TS_UE2_PORT; // vc_userprofile.currIpaddr := PX_IMS_TS_UE2_IPADDR; // vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT; // vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR; // vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE2_BEARER_IPADDR; // vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; // vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER; // vc_userprofile.qop := PX_IMS_SUT_UE2_QOP; // vc_userprofile.privUsername := PX_IMS_SUT_UE2_PRIVAT_USERNAME; // vc_userprofile.passwd := PX_IMS_SUT_UE2_PRIVAT_PASSWD; // vc_userprofile.registrarDomain := PX_IMS_SUT_UE2_REGISTRAR; // } case (c_userProfile_ICSCFwithHomeUE) { //variant c_userProfile_ICSCFwithHomeUE - UE4 parameters vc_userprofile.currPort := PX_DIAMETER_MW_ETS_CSCF_PORT; // via (Mw interface of TS) vc_userprofile.currIpaddr := PX_DIAMETER_MW_ETS_CSCF_IPADDR;// via vc_userprofile.contactPort := 5060; // contact (simulated UE port) vc_userprofile.contactIpaddr := "192.168.100.100"; // contact (simulated UE IP address) vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE4_BEARER_IPADDR; vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register) vc_userprofile.qop := PX_IMS_SUT_UE4_QOP; // Authorization vc_userprofile.privUsername := PX_IMS_SUT_UE4_PRIVAT_USERNAME; // Authorization vc_userprofile.passwd := PX_IMS_SUT_UE4_PRIVAT_PASSWD; // Authorization vc_userprofile.registrarDomain := PX_IMS_SUT_UE4_REGISTRAR; // Authorization } } }//end function f_init_userprofile function f_initSipUrl(in integer p_user) runs on ImsComponent return SipUrl { var SipUrl v_sipUrl := { scheme := c_sipScheme, // contains "sip" components := { sip:= { userInfo := omit, hostPort := {omit,omit}}}, urlParameters := omit, headers := omit}; // //urn was not used // var SipUrl v_urnUrl := { // scheme := c_urnScheme, // contains "urn" // components := { urn:= { // namespaceId := "service", // namespaceSpecificString := PX_IMS_SUT_EMERGENCY_SERVICE_namespaceSpecificString}}, // urlParameters := omit, // headers := omit}; select(p_user){ case (c_userProfile_UE1atSUThome) { v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE1_PUBLIC_USER, password:=omit}; v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE1_HOME_DOMAIN, portField :=omit} } case (c_userProfile_UE2atSUThome) { v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE2_PUBLIC_USER, password:=omit}; v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE2_HOME_DOMAIN, portField :=omit} } case (c_userProfile_ICSCFwithHomeUE) { v_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE4_PUBLIC_USER/*PX_IMS_TS_IMS1UE_PUBLIC_USER*/, password:=omit}; v_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE4_HOME_DOMAIN/*PX_IMS_TS_IMS1UE_HOME_DOMAIN*/, portField :=omit} } }; // if(p_user == c_serviceProfile_EMERGENCY or p_user == c_serviceProfile_EMERGENCY_INVALID) // {return(v_urnUrl)} // else // { return(v_sipUrl) // } }//end function f_initSipUrl }//end group UserProfiles{ } // End of module DiameterRfRo_SIP_TCFunctions