/* * @author TTF T016 * @version $Id$ * @desc This module provides the TCfunctions used by the test component * for SCCAS tests. */ module AtsSccas_TCFunctions { // XSD support import from XSD all; // LibCommon import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_DataStrings all; // LibSip import from LibSip_SIPTypesAndValues all; import from LibSip_SDPTypes all; import from LibSip_Templates all; import from LibSip_Steps all; import from LibSip_Interface all; import from LibSip_PIXITS all; // LibIms import from LibIms_Templates all; import from LibIms_Steps all; import from LibIms_SIPTypesAndValues all; import from LibIms_Interface all; // AtsSccas // import from AtsSccas_TestSystem all; import from AtsSccas_Templates all; import from AtsSccas_Steps all; import from AtsSccas_PICS all; import from AtsSccas_PIXITS all; import from AtsSccas_TestConfiguration all; group Group_6_3 { group TP_6_3_1_General { /** * @desc Verify that the SCCAS successfully obtain/processes 3pty registration information * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_RSC_REG_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; var template(value) REGISTER_Request m_register3ptyUe; var template(value) RequestUnion m_req; var template(value) Response m_ResponseReg_3ptyUe; // Preamble f_init_userprofile(c_userProfile_PCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); f_initSipUrl(c_userProfile_PCSCFwithHomeUE); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync //Registration f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER m_register3ptyUe := m_register_ue_srvcc( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", omit, omit, omit ); m_req:= {Register:=valueof(m_register3ptyUe)}; m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( c_statusLine200, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, m_SipUrl_currDomain(vc_userprofile), vc_from.addressField.nameAddr.addrSpec ); f_init_userprofile(c_userProfile_SCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS f_initSipUrl(c_userProfile_SCSCFwithHomeUE); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER f_SendREGISTER( m_REGISTER_Request_AS( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, -, "600000", m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_RSC_REG_01 /** * @desc Verify that the SCCAS successfully obtain/processes de-registration information (Expires=0) * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_RSC_REG_02(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preamble f_init_userprofile(c_userProfile_SCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS f_initSipUrl(c_userProfile_SCSCFwithHomeUE); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER f_SendREGISTER( m_REGISTER_Request_AS( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, -, "0", - , -) ); tc_ack.start; alt { [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_RSC_REG_02 } // End of group TP_6_3_1_General group TP_6_3_2_Triggers_To_ATCF { /** * @desc Verify that the SCCAS successfully obtain/processes SRVCC information * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_RSC_REG_03(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; var template(value) REGISTER_Request m_register3ptyUe; var template(value) RequestUnion m_req; var template(value) Response m_ResponseReg_3ptyUe; // Preamble f_init_userprofile(c_userProfile_PCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); f_initSipUrl(c_userProfile_PCSCFwithHomeUE); //Registration f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER m_register3ptyUe := m_register_ue_srvcc( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", m_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), omit, omit ); m_req:= {Register:=valueof(m_register3ptyUe)}; m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( c_statusLine200, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, m_SipUrl_currDomain(vc_userprofile), vc_from.addressField.nameAddr.addrSpec ); f_init_userprofile(c_userProfile_SCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS f_initSipUrl(c_userProfile_SCSCFwithHomeUE); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER f_SendREGISTER( m_REGISTER_Request_AS( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, -, "600000", m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } //Deregistration f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER f_SendREGISTER( m_REGISTER_Request_AS( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, -, "0", - , -) ); tc_ack.start; alt { [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_RSC_REG_03 } // End of group TP_6_3_2_Triggers_To_ATCF group TP_6_3_3_SRVCC_Information_To_ATCF { /** * @desc Verify that the SCCAS successfully sends MESSAGE providing PS to CS SRVCC information * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_RSC_REG_04_ueims(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; var template(value) REGISTER_Request m_register3ptyUe; var template(value) RequestUnion m_req; var template(value) Response m_ResponseReg_3ptyUe; // Preamble f_init_userprofile(c_userProfile_PCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); f_initSipUrl(c_userProfile_PCSCFwithHomeUE); //Registration f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER m_register3ptyUe := m_register_ue_srvcc( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri { m_fcValue( "g-3gpp-atcf-mgmt-uri-in-path", { {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} }) }), omit, omit ); m_req:= {Register:=valueof(m_register3ptyUe)}; m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( c_statusLine200, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, m_SipUrl_currDomain(vc_userprofile), vc_from.addressField.nameAddr.addrSpec ); f_init_userprofile(c_userProfile_SCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS f_initSipUrl(c_userProfile_SCSCFwithHomeUE); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER f_SendREGISTER( m_REGISTER_Request_AS( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, -, "600000", m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) )); tc_ack.start; alt { // [] SIPP.receive(mw_sccas_Response_2xxonREGISTER( // vc_callId, // vc_cSeq, // vc_from, // vc_to, // vc_via_REG, // vc_contact, // mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation // mw_PAssertedID( // mw_PAssertedIDValue(PX_SCCAS_URI) // ) // )) [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } // TODO Deregistration? f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_RSC_REG_04_ueims function f_TC_ISC_SCCAS_RSC_REG_04_atcf(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preamble //TODO review and add/correct suitable profiles f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Message LibIms_Steps.f_setHeadersMESSAGE(v_cSeq_s, vc_from.addressField.addrSpecUnion, vc_to.addressField.addrSpecUnion); f_awaitingMESSAGE( mw_sccas_MESSAGE_Request( -, -, mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation -, m_contentType("application/vnd.3gpp.SRVCC-info+xml"), // TODO To be refined during validation ? // TODO To be refined during validation ) ); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync // Answer to the MESSAGE f_send200OK(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_RSC_REG_04_atcf } // End of group TP_6_3_3_SRVCC_Information_To_ATCF group TP_6_3_4_Trigger_SRVCC_To_MSC { /** * @desc Verify that the SCCAS successfully get CS to PS SRVCC information * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_RSC_REG_05_ueims(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; var Contact v_contact; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_setHeaders_REGISTER(v_cSeq_s); v_contact := valueof(vc_contact); v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation { "g.3gpp.atcf-mgmt-uri", {tokenOrHost := PX_ACTF_MGMT_URI} }, { "g.3gpp.path", {tokenOrHost := PX_ACTF_URI} } }; f_SendREGISTER( m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, v_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -/*m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri { m_fcValue( "g-3gpp-atcf-mgmt-uri\", { {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} }) })*/, // TODO To be refined during validation m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation )); tc_ack.start; alt { [] SIPP.receive(mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } // TODO Deregistration? f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_RSC_REG_05_ueims function f_TC_ISC_SCCAS_RSC_REG_05_msc(in CSeq p_cSeq_s) runs on ImsComponent { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync // deregistration f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // end function f_TC_ISC_SCCAS_RSC_REG_05_msc } // End of group TP_6_3_4_Trigger_SRVCC_To_MSC group TP_6_3_5_Providing_SRVCC_To_MSC { /** * @desc Verify that the SCCAS successfully provide CS to PS SRVCC information * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_RSC_REG_06_ueims(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; var Contact v_contact; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_setHeaders_REGISTER(v_cSeq_s); v_contact := valueof(vc_contact); v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation { "g.3gpp.icsi-ref", {tokenOrHost := PX_ICSI_URI} } }; f_SendREGISTER( m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, v_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -/*m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri { m_fcValue( "g-3gpp-atcf-mgmt-uri-in-path", { {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} }) })*/, // TODO To be refined during validation m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation )); tc_ack.start; alt { [] SIPP.receive(mw_sccas_Response_2xxonREGISTER( vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation mw_PAssertedID( mw_PAssertedIDValue(PX_SCCAS_URI) ), // TODO To be refined during validation mw_acceptContact( { // TODO To be refined during validation { "g.3gpp.path-media", {tokenOrHost := PX_ICSI_URI} } } ) )) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } // TODO Deregistration? f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_RSC_REG_06_ueims function f_TC_ISC_SCCAS_RSC_REG_06_msc(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Message LibIms_Steps.f_setHeadersMESSAGE(v_cSeq_s, vc_from.addressField.addrSpecUnion, vc_to.addressField.addrSpecUnion); f_awaitingMESSAGE( mw_sccas_MESSAGE_Request( -, -, mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation -, m_contentType("application/vnd.3gpp.SRVCC-info+xml"), // TODO To be refined during validation ? // TODO To be refined during validation ) ); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync // Answer to the MESSAGE f_send200OK(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // end function f_TC_ISC_SCCAS_RSC_REG_06_msc } // End of group TP_6_3_5_Providing_SRVCC_To_MSC } // End of group Group_6_3 group Group_6A_4 { group TP_6A_4_2_SIP_INVITE_request { /** * @desc Verify that the SCCAS send INVITE for anchored user populated with FeatureCaps header * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_GEN_INV_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_sccas_Response_2xxonINVITE(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } // TODO Deregistration? f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_GEN_INV_01 } // End of group TP_6A_4_2_SIP_INVITE_request group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE { /** * @desc Verify that the SCCAS sends 1xx and/or 2xx response to the SIP INVITE request towards the served user. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_GEN_INV_02(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preamble f_registrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { repeat } [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync f_sendResponse( m_Response_18XonINVITE_AS_Featurecaps( c_statusLine183, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, -, - )); } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } //var template FcValue fc:= mw_fcValue("g3gppFeatureCapabilityIndicator",-); tc_wait.start; alt { [] SIPP.receive(mw_Response_PCV_FeatureCaps( 183, ?, ?, ?, mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")), (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator")) }) )) { tc_wait.stop; log("*** " & __SCOPE__ & ": PASS: response 183 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_wait.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } // Postamble f_deregistrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_GEN_INV_02 } // End of group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE group TP_6A_4_5_Target_refresh_request_for_a_dialog_and_associated_responses { /** * @desc Verify that the SCCAS sends 1xx and/or 2xx response to the SIP INVITE target refresh request towards the served user * @param p_cSeq_s Random CSeq INVITE number */ function f_TC_ISC_SCCAS_GEN_RIN_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; f_registrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_EstablishDialogAS(v_cSeq_s); f_IncCSeq(v_cSeq_s); f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { repeat } [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync f_sendResponse( m_Response_18XonINVITE_AS_Featurecaps( c_statusLine183, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, -, - )); f_sendResponse( m_Response_2xx_Base( c_statusLine200, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } //var template FcValue fc:= mw_fcValue("g3gppFeatureCapabilityIndicator",-); tc_wait.start; alt { [] SIPP.receive(mw_Response_PCV_FeatureCaps( 183, ?, ?, ?, //mw_sccas_featureCaps({}) mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")) }) )) { log("*** " & __SCOPE__ & ": PASS: 183 message was received ***"); //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync repeat } [] SIPP.receive(mw_Response_PCV_FeatureCaps( 200, ?, ?, ?, mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")), (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator")) }) )) { tc_wait.stop; log("*** " & __SCOPE__ & ": PASS: response 200 OK was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_wait.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_ReleaseDialogAS(v_cSeq_s); f_deregistrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } //End of function f_TC_ISC_SCCAS_GEN_RIN_01 /** * @desc Verify that the SCCAS sends the SIP INVITE target refresh request towards the served user * @param p_cSeq_s Random CSeq INVITE number */ function f_TC_ISC_SCCAS_GEN_RIN_02(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; f_registrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_EstablishDialogAS(v_cSeq_s); f_IncCSeq(v_cSeq_s); f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_wait.start; alt { [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { repeat } [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { tc_wait.stop; log("*** " & __SCOPE__ & ": PASS: ReINVITE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_wait.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_ReleaseDialogAS(v_cSeq_s); f_deregistrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } //End of function f_TC_ISC_SCCAS_GEN_RIN_02 } //End of group TP_6A_4_5_Target_refresh_request_for_a_dialog_and_associated_responses } // End of group Group_6A_4 group Group_7_3 { group TP_7_3_1_Distinction_of_requests_sent_to_the_SCCAS { /** * @desc Verify that the SCCAS first receives SIP INVITE request from UE/SCSCF * @param p_cSeq_s Random CSeq INVITE number */ function f_TC_ISC_SCCAS_ORI_INV_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; f_registrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_IncCSeq(v_cSeq_s); f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_wait.start; alt { [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { repeat } [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { tc_wait.stop; log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_wait.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } //End of function f_TC_ISC_SCCAS_ORI_INV_01 } //End of group TP_7_3_1_Distinction_of_requests_sent_to_the_SCCAS group TP_7_3_2_Call_origination_procedures_at_the_SCCAS{ /** * @desc Verify that the SCCAS sends 1xx/2xx response to the SIP INVITE request towards the served user * @param p_cSeq_s Random CSeq INVITE number */ function f_TC_ISC_SCCAS_ORI_INV_02(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; f_registrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_IncCSeq(v_cSeq_s); f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { repeat } [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync f_sendResponse( m_Response_18XonINVITE_AS_Featurecaps( c_statusLine183, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, -, - )); f_sendResponse( m_Response_2xx_Base( c_statusLine200, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } //var template FcValue fc:= mw_fcValue("g3gppFeatureCapabilityIndicator",-); tc_wait.start; alt { [] SIPP.receive(mw_Response_PCV_FeatureCaps( 183, ?, ?, ?, //mw_sccas_featureCaps({}) mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")) }) )) { log("*** " & __SCOPE__ & ": PASS: 183 message was received ***"); //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync repeat } [] SIPP.receive(mw_Response_PCV_FeatureCaps( 200, ?, ?, ?, mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")), (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator")) }) )) { tc_wait.stop; log("*** " & __SCOPE__ & ": PASS: response 200 OK was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_wait.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } //End of function f_TC_ISC_SCCAS_ORI_INV_02 } //End of group TP_7_3_2_Call_origination_procedures_at_the_SCCAS } // End of group Group_7_3 group Group_8_3 { group TP_8_3_1_Distinction_of_requests_sent_to_the_SCCAS{ /** * @desc VVerify that the SCCAS last receives SIP INVITE request from UE/SCSCF * @param p_cSeq_s Random CSeq INVITE number */ function f_TC_ISC_SCCAS_TER_INV_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; f_registrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_IncCSeq(v_cSeq_s); f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_wait.start; alt { [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { repeat } [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { tc_wait.stop; log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_wait.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } //End of function f_TC_ISC_SCCAS_TER_INV_01 } // End of group TP_8_3_1_Distinction_of_requests_sent_to_the_SCCAS } // End of group Group_8_3 group Group_9_3 { function f_TC_ISC_SCCAS_CPT_INV_01(in CSeq p_cSeq_s) runs on ImsComponent { // TODO: set correct service profiles LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE(m_sccas_invite( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, omit, // template(omit) Require p_require := omit, vc_route, m_supported_replaces, //template(omit) Supported p_supported := omit, omit //template(value) MessageBody p_mb ) ); f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s)); f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } function f_TC_ISC_SCCAS_CPT_INV_02(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // initial condition: the UE entity isRegisteredTo the IMS f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE(m_sccas_invite( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, omit, // template(omit) Require p_require := omit, vc_route, m_supported_replaces, m_messageBody_SDP_mediaOnly ) ); f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s)); f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_IISC_SCCAS_CPT_INV_02 function f_TC_ISC_SCCAS_CPT_RIN_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // initial condition: the UE entity isRegisteredTo the IMS f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_IISC_SCCAS_CPT_RIN_01 function f_TC_ISC_SCCAS_CPT_ACK_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // initial condition: the UE entity isRegisteredTo the IMS f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_IISC_SCCAS_CPT_ACK_01 function f_TC_ISC_SCCAS_CPT_INV_03(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // initial condition: the UE entity isRegisteredTo the IMS f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy // STEP: send invite LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE(m_sccas_invite_contact( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, m_contact_g3gppSrvccAlertingFeature, // TODO: correct use auf g3gppSrvccAlertingFeatureCapabilityIndicator omit, // template(omit) Require p_require := omit, vc_route, omit, m_messageBody_SDP_mediaOnly ) ); f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppMidcallFeature)); f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_ISC_SCCAS_CPT_INV_03 function f_TC_ISC_SCCAS_CPT_INV_04(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // initial condition: the UE entity isRegisteredTo the IMS f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy // STEP: send invite LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE(m_sccas_invite_contact( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, m_contact_g3gppDrvccAlertingFeature, // TODO: correct use auf g3gppDrvccAlertingFeature omit, // template(omit) Require p_require := omit, vc_route, m_supported_replaces, omit ) ); f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppDrvccAlertingFeature)); f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_ISC_SCCAS_CPT_INV_04 function f_TC_ISC_SCCAS_CPT_INV_05(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // initial condition: the UE entity isRegisteredTo the IMS f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy // STEP: send invite LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE(m_sccas_invite_contact( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, m_contact_g3gppDrvccOrigPreAlertingFeature, // TODO: correct use auf g3gppDrvccOrigPreAlertingFeature omit, // template(omit) Require p_require := omit, vc_route, m_supported_replaces, omit // TODO ) ); tc_ack.start; alt { [] SIPP.receive(mw_UPDATE_Request_ContactChange( vc_callId, mw_contact_sourceLegAtCreation, mw_contentType_appclication_sdp, mw_sdpmessageBody)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: UPDATE message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_ISC_SCCAS_CPT_INV_05 function f_TC_ISC_SCCAS_CPT_INV_06(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // initial condition: the UE entity isRegisteredTo the IMS f_registrationAS(p_cSeq_s); // TODO: the IUT entity hasAchievedInitialINVITE // TODO: INVITE contains: g3gppDrvccAlerting // STEP: send r_180_ringing f_sendResponse(m_Response_Base(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); // Expected Update tc_ack.start; alt { [] SIPP.receive(mw_UPDATE_Request_ContactChange( vc_callId, mw_contact_sourceLegAtCreation, mw_contentType_appclication_sdp, mw_sdpmessageBody)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: UPDATE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_ISC_SCCAS_CPT_INV_06 function f_TC_ISC_SCCAS_PCT_REF_02(in CSeq p_cSeq_s) runs on ImsComponent { // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // initial condition: the UE entity isRegisteredTo the IMS f_registrationAS(p_cSeq_s); // STEP: send 488 notAcceptableHere f_sendResponse(m_Response_Base(c_statusLine488, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); // template CallId p_callId := ?, // template(value) SipUrl p_requestUri, // template(value) SipUrl p_referredBy, // template(value) MessageBody p_messageBody // Ecpecation: REFER message tc_ack.start; alt { [] SIPP.receive(mw_REFER_Request_stl( vc_callId, ?, ?, mw_sdpmessageBody)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: REFER message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_ISC_SCCAS_PCT_REF_02 function f_TC_ISC_SCCAS_PCT_INV_05(in CSeq p_cSeq_s) runs on ImsComponent { // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // initial condition: the UE entity isRegisteredTo the IMS f_registrationAS(p_cSeq_s); // TODO: // one dialog is early dialog // and // a SIP 180 (Ringing) response to the SIP INVITE request has not been received yet in any of the existing dialogs // and // the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting feature-capability indicator as in a Feature-Caps header field of SIP 18x responses // and // the Contact header field in the initial SIP INVITE request sent by the SC UE towards the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting media feature tag as // and // the remote leg is not a precondition enabled dialog // STEp: send invite LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE(m_sccas_invite( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, omit, vc_route, m_supported_replaces, m_messageBody_SDP_mediaOnly )); // TDOD PEarlyMedia indicating value "the last received P-Early-Media header field", // TODO: Contact indicating value "set to the Contact header field provided by the served UE at the creation of the dialog", // TDOD: SDP containing Media indicating value "the media characteristics as received in the SIP INVITE request due to PS to CS STN (including any precondition mechanism specific SDP attributes)"; f_awaitingUPDATE(mw_UPDATE_Request_ContactChange(vc_callId, vc_contact, mw_contentType_appclication_sdp, ?)); f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_ISC_SCCAS_PCT_INV_05 function f_TC_ISC_SCCAS_PCT_RES_02(in CSeq p_cSeq_s) runs on ImsComponent { // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // initial condition: the UE entity isRegisteredTo the IMS f_registrationAS(p_cSeq_s); // STEP: send r_200_ok f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); // Expeted Result: r_1xx_Any tc_ack.start; alt { [] SIPP.receive(mw_Response_1xx_stl( vc_callId, vc_cSeq, ?, // TODO: EarlyMedia indicating value "the last received P-Early-Media header field", mw_contentType_appclication_sdp, mw_sdpmessageBody )) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: REFER message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } } // End of group Group_9_3 group Group_10_3 { /** * @desc Verify that the SCC AS successfully processes an INVITE on a previously established dialog if the SIP INVITE request contains a Replaces header field. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_PPT_RIN_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite_replaces( // TODO request active speech media component using CS bearer vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local), m_Replaces(vc_callId.callid,{quotedString:=""},{quotedString:=""}) // indicating access transfer procedure )); tc_ack.start; alt { [] SIPP.receive(mw_INVITE_Request_contact(mw_sccas_contact())) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_RIN_01 /** * @desc Verify that the SCC AS successfully processes an UPDATE on an existing early dialog if the SIP INVITE request contains a Replaces header field. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_PPT_RIN_02(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( // TODO request active speech media component using CS bearer vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_UPDATE_Request_Base(?)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: UPDATE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_RIN_02 /** * @desc Verify that the SCC AS processes an INVITE if it is unable to associate the SIP INVITE request with a confirmed dialog or on a previously established dialog. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_PPT_RIN_03(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( // TODO Replaces indicating value PX_UE_A_SIP_URI; // indicating access transfer procedure vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine480)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_RIN_03 /** * @desc Verify that the SCC AS processes an INVITE if number of media lines in the Target Access Leg is less than the number of media lines in the Source Access Leg. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_PPT_RIN_04(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( // TODO TargetDialog indicating value PX_UE_MediaLines; // indicating number of media lines in the Target Access Leg is less than the number of media lines in the Source Access Leg vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine480)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_RIN_04 /** * @desc Verify that the SCC AS successfully processes an BYE on a previously established dialog, if does not receive within this time interval an initial SIP INVITE request. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_PPT_BYE_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendBYE( m_BYE_Request_UE( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); tc_T1.start(8.0); tc_T1.timeout; // wait 8s tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine200)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } tc_ack.start; alt { [] SIPP.receive(mw_BYE_Request_Base(?)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: BYE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_BYE_01 /** * @desc Verify that the SCC AS successfully processes an CANCEL on a early dialog. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_PPT_BYE_02(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendBYE( m_BYE_Request_UE( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); tc_T1.start(8.0); tc_T1.timeout; // wait 8s tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine200)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } tc_ack.start; alt { [] SIPP.receive(mw_CANCEL_Request_Base(?)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: CANCEL message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_BYE_02 /** * @desc Verify that the SCC AS successfully processes an CANCEL on a early dialog. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_PPT_CAN_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersCANCEL(v_cSeq_s); f_SendCANCEL( m_CANCEL_Request_Reason_IMS( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG,vc_route, 503 )); tc_T1.start(8.0); tc_T1.timeout; // wait 8s tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine200)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_CAN_01 /** * @desc Verify that the SCC AS successfully processes an SIP 503 (Service Unavailable) response on a early dialog. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_PPT_RES_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_sendResponse( m_Response_2xx_Base( c_statusLine503, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); tc_T1.start(8.0); tc_T1.timeout; // wait 8s tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine503)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: Respoonse 503 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_RES_01 } // End of group Group_10_3 group Group_11_3 { /** * @desc Verify that the SCC AS successfully processes an INVITE that includes an active speech media component using CS bearer. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_CON_RIN_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( // TODO request active speech media component using CS bearer vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_INVITE_Request_contact(mw_sccas_contact())) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CON_RIN_01 /** * @desc Verify that the SCC AS successfully processes an INVITE due to two STIs on the Target Access Leg. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_CON_RIN_02(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( // TODO request CS -> PS vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_INVITE_Request_contact(mw_sccas_contact())) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CON_RIN_02 /** * @desc Verify that the SCC AS rejects an INVITE due missing ability to associate it to an ongoing or different SIP dialog. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_CON_RIN_03(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine480)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CON_RIN_03 } // End of group Group_11_3 group Group_12_3 { /** * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for terminating call in pre-alerting phase using PS to CS SRVCC procedure. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_PCT_INV_06(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, m_contact_wildcard("g3gppps2csSrvccTermPreAlerting"), -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine183)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PCT_INV_06 /** * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for originating call in pre-alerting phase using PS to CS SRVCC procedure. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_PCT_INV_02(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, m_contact_wildcard("g3gppPs2csSrvccOrigPreAlerting"), -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine183)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PCT_INV_02 /** * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_PCT_INV_03(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_sendResponse( m_Response_18x_Base( c_statusLine183, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine200)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: response 200 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PCT_INV_03 /** * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_MED_OPT_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); f_setHeadersOPTIONS(v_cSeq_s); f_SendOPTIONS( m_OPTIONS_Request_Base( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine200)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 response was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_MED_OPT_01 /** * @desc Verify that the SCC AS handles correctly the transfer of session with active speech media component. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_CPT_INV_07(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine200)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_07 /** * @desc Verify that the SCC AS handles correctly the transfer of session with inactive speech media component. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_CPT_INV_08(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( // TODO request active speech media component using CS bearer vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_08 /** * @desc Verify that the SCC AS handles correctly the transfer of originating session in alerting phase. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_CPT_INV_09(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_sendResponse( m_Response_2xx_Base( c_statusLine200, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine180)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_09 /** * @desc Verify that the SCC AS handles correctly the transfer of terminating session in alerting phase. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_CPT_INV_10(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_sendResponse( m_Response_2xx_Base( c_statusLine200, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine183)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_10 /** * @desc Verify that the SCC AS handles correctly additional session transfer initiation. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_CPT_INV_11(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine200)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_11 /** * @desc Verify that the SCC AS handles correctly transfer of session with inactive speech media component. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_CPT_INV_12(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE( m_sccas_invite( // TODO request active speech media component using CS bearer vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local) )); tc_ack.start; alt { [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_12 /** * @desc Verify that the SCC AS handles correctly transfer of originating session in alerting phase. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_CPT_INV_13(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_sendResponse( m_Response_2xx_Base( c_statusLine200, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine180)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_13 /** * @desc Verify that the SCC AS handles correctly transfer of terminating session in alerting phase. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_CPT_INV_14(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_sendResponse( m_Response_2xx_Base( c_statusLine200, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine183)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_14 /** * @desc Verify that the SCC AS correctly behave procedures when the access transfer is completed. * @param p_cSeq_s Random CSeq REGISTER number */ function f_TC_ISC_SCCAS_TER_BYE_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); // Registration f_sendRegistrationAndAwait200Ok( v_cSeq_s, m_sccas_register( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, m_add_Authorization_digest( vc_authorization, {c_Integrity_protected_no} ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", -, m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendBYE( m_BYE_Request_UE( vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG )); tc_ack.start; alt { [] SIPP.receive(mw_Response_Base(c_statusLine200)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_TER_BYE_01 } // End of group Group_12_3 group helpers { function f_sendRegistrationAndAwait200Ok( in CSeq p_cSeq_s, in template (omit) REGISTER_Request p_register, template (present) Response p_response ) runs on ImsComponent { f_setHeaders_REGISTER(p_cSeq_s); f_SendREGISTER(p_register); tc_ack.start; alt { [] SIPP.receive(p_response) { tc_ack.stop; } [] tc_ack.timeout { f_setVerdict(e_timeout); } } } // End of function f_sendRegistrationAndAwait200Ok } // End of group helpers } // End of module AtsSccas_TCFunctions