diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..93edb93a23dd3c8dcb29104a10240b377debbf5e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,16 @@ +[submodule "ttcn/LibCommon"] + path = ttcn/LibCommon + url = https://forge.etsi.org/rep/LIBS/LibCommon.git + branch = STF574 +[submodule "ttcn/LibSip"] + path = ttcn/LibSip + url = https://forge.etsi.org/rep/LIBS/LibSip.git + branch = STF574 +[submodule "ttcn/LibIms"] + path = ttcn/LibIms + url = https://forge.etsi.org/rep/LIBS/LibIms.git + branch = STF574 +[submodule "titan-test-system-framework"] + path = titan-test-system-framework + url = https://labs.etsi.org/rep/cti-tools/titan-test-system-framework.git + branch = devel diff --git a/test_purposes/References.txt b/test_purposes/References.txt new file mode 100644 index 0000000000000000000000000000000000000000..47a53791a6c888ae6c41cb78bef1e5055aad1113 --- /dev/null +++ b/test_purposes/References.txt @@ -0,0 +1,7 @@ +[1] ETSI TS 124 237: "Universal Mobile Telecommunications System (UMTS); LTE; IP Multimedia (IM) Core Network (CN) subsystem IP Multimedia Subsystem (IMS) service continuity; Stage 3 (3GPP TS 24.237 Release 16)". +[2] ETSI TS 124 292: "Universal Mobile Telecommunications System (UMTS); LTE; IP Multimedia (IM) Core Network (CN) subsystem Centralized Services (ICS); Stage 3 (3GPP TS 24.292 Release 16)". +[3] ETSI TS 103 833-1: "Core Network and Interoperability Testing (INT); Conformance Test Specifications for the SCC-AS Services; (3GPP™ Release 16); Part 1: Protocol Implementation Conformance Statement (PICS)". +[4] ISO/IEC 9646-1: "Information technology -- Open Systems Interconnection -- Conformance testing methodology and framework -- Part 1: General concepts". +[5] ISO/IEC 9646-7: "Information technology -- Open Systems Interconnection -- Conformance testing methodology and framework -- Part 7: Implementation Conformance Statements". +[6] ETSI ETS 300 406: "Methods for testing and Specification (MTS); Protocol and profile conformance testing specifications; Standardization methodology". +[7] ETSI ES 203 119-4: "Methods for Testing and Specification (MTS); The Test Description Language (TDL); Part 4: Structured Test Objective Specification (Extension)". \ No newline at end of file diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..e4c656aadf6ef875f3304563bcf94ab8d526bea3 --- /dev/null +++ b/test_purposes/Sip_Common.tplan2 @@ -0,0 +1,236 @@ +/* ETSI Software License +* As long as the here under conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, +* the warranties of merchant ability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2019-2020 +*/ + + +Package Sip_Common { + Domain { + pics: + - NONE + - PICS_2 + - NOT_PICS_2 + ; + entities: + - SCCAS + - IMS_S_CSCF + - IMS_I_CSCF + - UE + - UE_TERM + - IUT + - ATCF + - MSC + ; + events: + - receives + - sends + - forwards + - isRequestedToPlaceACall + // Initial conditions + - isNotRegisteredTo + - hasAchievedFirstRegistration + - isRegisteredTo + - isNotAttachedTo + - isAttachedTo + - isNotConfiguredForTopologyHiding + - isConfiguredForTopologyHiding + - isExistingIn + - establishedSecurityRelation + - registeredIdentityTelURI + - registeredIdentitySipURI + - hasInitiatedDialogWith + - hasInitiatedPS2CSinEarlydialog + - hasInitiatedPS2CSinAlertingState + - hasEstablishedDialog + - hasEstablishedPS2CSDialog + - isConfiguredWithENUMentryForTelURI_E164NumberOf + - hasReceivedInitialRequestForDialog + - hasReceived200OkOnInitialRequestForDialogWith + - hasReceived180OnInitialRequest + - hasReceived200OkCancel + - hasReceivedTerminatedRequest + - registeredPublicIdsWithTelUriAndSipUri + - hasReceivedSubsequentOrTargetRefreshRequestInDialog + - previouslyEstablishedCallWith + - isRequestedToSend + - isRequestedToDeregisterUser + - isBusy + - isNoLongerAvailable + - isTriggeredToDetachUser + - isRequestedToDetachfromNetwork + - hasAchievedFirstREGISTER + - hasResponded486INVITE + - hasAchievedInitialINVITE + - hasAchievedINVITE + - hasAchievedUPDATEuponINVITE + - timerOperatorSpecificTimeout //NOTE: 8 seconds is an appropriate value for the operator policy. + - isAttachingToNetwork + - hasDoneSubscription + ; + } // End of Domain section + + +// Const { +// PX_Stored_Domain_Uri, +// PX_Affected_IMPU, +// PX_Contact, +// PX_UE_A_SIP_URI, +// PX_UE_A_TEL_URI, +// PX_UE_A_CALLID, +// PX_UE_A_REALM, +// PX_UE_A_USERNAME, +// PX_UE_A_INVALID_USERNAME, +// PX_UE_A_VIA, +// PX_UE_A_AUTH_ALG, +// PX_OPERATOR_ID_A, +// PX_UE_B_SIP_URI, +// PX_UE_B_TEL_URI, +// PX_UE_B_USERNAME, +// PX_UE_B_INVALID_USERNAME, +// PX_UE_B_VIA, +// PX_UE_B_AUTH_ALG, +// PX_OPERATOR_ID_B, +// PX_P_CSCF_A_SIP_URI, +// PX_IMS_A_ICID, +// PX_IMS_A_ORIG_IOI, +// PX_S_CSCF_A_SIP_URI, +// PX_P_CSCF_A_SIP_URI, +// PX_IBCF_B_SIP_URI, + +// PX_MSC_ORIG_ICID, // ETSI TS 124 292 V16.0.0 Clause 6.3.2 Initial registration 11) +// PX_MSC_ORIG_IOI, // ETSI TS 124 292 V16.0.0 Clause 6.3.2 Initial registration 11) +// PX_MSC_VISITED_NTW // ETSI TS 124 292 V16.0.0 Clause 6.3.2 Initial registration 12) +// PX_MSC_PANI_ACCESSTYPE // ETSI TS 124 292 V16.0.0 Clause 6.3.2 Initial registration 13) +// PX_MSC_PANI_ACCESSCLASS // ETSI TS 124 292 V16.0.0 Clause 6.3.2 Initial registration 13) +// PX_MSC_FORWARD_URI // ETSI TS 124 292 V16.0.0 Clause 6.3.2 Initial registration 14) + +// PX_TO_BE_DEFINED +// ; +// } // End of Const section + + Data { + + type SipMessage; + type EnumMessage; + + type SDP; + type XmlType; + type MimeType with + optional SDP of type SDP, + optional XML of type XmlType, + optional SipMessage of type SipMessage; + + type g3gppAtcfFeatureCapabilityIndicator; + + SipMessage REGISTER; + SipMessage SUBSCRIBE; + SipMessage INVITE; + SipMessage ACK; + SipMessage CANCEL; + SipMessage BYE; + SipMessage REFER; + SipMessage PRACK; + SipMessage UPDATE; + SipMessage OPTIONS; + // SIP Responses + SipMessage r_1xx_Any; + SipMessage r_100_Trying; + SipMessage r_180_Ringing; + SipMessage r_183_SessionProgress; + SipMessage r_200_Ok; + SipMessage r_2xx_Any; + SipMessage r_401_Unauthorized; + SipMessage r_403_Forbidden; + SipMessage r_404_NotFound; + SipMessage r_480_TemporaryUnavailable; + SipMessage r_486_INVITE; + SipMessage r_488_NotAcceptableHere; + SipMessage r_4xx_Any; + + type SipMessageBody + with + optional SDP of type SDP, + optional XML of type XmlType, + optional MIME of type MimeType; + + + + } // End of Data section + + Configuration { + Interface Type defaultGT accepts SipMessage; + Component Type SipComponent with gate g of type defaultGT; + + + Test Configuration CFG_SCCAS_01 + containing + Tester component IMS_S_CSCF of type SipComponent + SUT component IUT of type SipComponent + connection between IMS_S_CSCF.g and IUT.g; + + + Test Configuration CFG_SCCAS_02 + containing + Tester component IMS_S_CSCF of type SipComponent + Tester component ATCF of type SipComponent + SUT component IUT of type SipComponent + connection between IMS_S_CSCF.g and IUT.g + connection between ATCF.g and IUT.g; + + Test Configuration CFG_SCCAS_03 + containing + Tester component IMS_S_CSCF of type SipComponent + Tester component MSC of type SipComponent + SUT component IUT of type SipComponent + connection between IMS_S_CSCF.g and IUT.g + connection between MSC.g and IUT.g; + + Test Configuration CFG_SCSCF_01 + containing + Tester component SCCAS of type SipComponent + SUT component IUT of type SipComponent + connection between SCCAS.g and IUT.g; + + Test Configuration CFG_SCSCF_02 + containing + Tester component SCCAS of type SipComponent + Tester component UE of type SipComponent + SUT component IUT of type SipComponent + connection between SCCAS.g and IUT.g + connection between UE.g and IUT.g; + Test Configuration CFG_MSC_01 + containing + Tester component IMS_I_CSCF of type SipComponent + Tester component MSC of type SipComponent + SUT component IUT of type SipComponent + connection between IMS_I_CSCF.g and IUT.g; + + } + + //Type MSG (optional TCP of type CONTENT); + + //Type CONTENT; + //CONTENT tcp; + + //MSG MESSAGE; + + //Type MSG_SIZE; + + //Message_Body_Size MSG_SIZE; + +} // End of Package Sip_Common + diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_10_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_10_3.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..f317f8c35739ee3e5a07a843bde4eb9f84d9bea0 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_10_3.tplan2 @@ -0,0 +1,393 @@ +/* +Copyright (c) ETSI 2019-2022. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* interface at SCCAS */ +Package TP_SCCAS { + + + + Group "10.3.2 PS to PS access transfer procedures at the SCC AS" + { + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_PPT_RIN_01 + + Test objective "Verify that the SCC AS successfully processes an INVITE on a previously established dialog if the SIP INVITE request contains a Replaces header field." + + Reference + "ETSI TS 124 237 [1], Clauses 10.3.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2PS_ACCES_TRANSFER + + Initial conditions with { + the UE entity isRegisteredTo the IMS and // include g.3gpp.pstops-sti + the UE entity hasEstablishedDialog + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Replaces indicating value PX_UE_A_SIP_URI; // indicating access transfer procedure + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an INVITE containing // reINVITE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact indicating value PX_UE_A_SIP_URI; // added by SCC AS + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_PPT_RIN_01 + + Test Purpose { + + TP Id TP_ISC_SCCAS_PPT_RIN_02 + + Test objective "Verify that the SCC AS successfully processes an UPDATE on an existing early dialog if the SIP INVITE request contains a Replaces header field." + + Reference + "ETSI TS 124 237 [1], Clauses 10.3.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2PS_ACCES_TRANSFER + + Initial conditions with { + the UE entity isRegisteredTo the IMS and // include g.3gpp.pstops-sti + the UE entity hasInitiatedDialogWith + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Replaces indicating value PX_UE_A_SIP_URI; // indicating access transfer procedure + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an UPDATE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact indicating value PX_UE_A_SIP_URI; // added by SCC AS + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_PPT_RIN_02 + + Test Purpose { + + TP Id TP_ISC_SCCAS_PPT_RIN_03 + + Test objective "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." + + Reference + "ETSI TS 124 237 [1], Clauses 10.3.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE // PICS_SCCAS_PS2PS_ACCES_TRANSFER + + Initial conditions with { + the UE entity isRegisteredTo the IMS and // include g.3gpp.pstops-sti + the UE entity not hasEstablishedDialog and + the UE entity not hasInitiatedDialogWith + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Replaces indicating value PX_UE_A_SIP_URI; // indicating access transfer procedure + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_480 containing // reject (Temporarily Unavailable) + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID; + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_PPT_RIN_03 + + Test Purpose { + + TP Id TP_ISC_SCCAS_PPT_RIN_04 + + Test objective "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." + + Reference + "ETSI TS 124 237 [1], Clauses 10.3.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE // PICS_SCCAS_PS2PS_ACCES_TRANSFER + + Initial conditions with { + the UE entity isRegisteredTo the IMS and // include g.3gpp.pstops-sti + the UE entity hasEstablishedDialog + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + 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 + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_480 containing // reject (Temporarily Unavailable) + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID; + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_PPT_RIN_04 + + } // end Group "10.3.2 PS to PS access transfer procedures at the SCC AS" + + + Group "10.3.4 S-CSCF releasing the source access leg during PS to PS access transfer" + { + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_PPT_BYE_01 + + Test objective "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." + + Reference + "ETSI TS 124 237 [1], Clauses 10.3.4" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE // PICS_SCCAS_PS2PS_ACCES_TRANSFER + + Initial conditions with { + the UE entity isRegisteredTo the IMS and // include g.3gpp.pstops-sti + the UE entity hasEstablishedDialog + } + + Expected behaviour + ensure that { + when { + (.) at time point t1: the IUT entity receives an BYE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Reason indicating value 480; // status code 480 (Temporarily Unavailable) + from the IMS_S_CSCF entity + } + then { + (!) "after time interval of 8 seconds" after t1: the IUT entity sends an r_200 containing // 200 OK (BYE) to UE_B + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + and + the IUT entity sends an BYE containing // BYE to UE_A + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_PPT_BYE_01 + + } // end Group 10.3.4 S-CSCF releasing the source access leg during PS to PS access transfer + + + Group "10.3.5 P-CSCF releasing the source access leg during PS to PS access transfer" + { + // NOTE: see section 12.3.3.2 + + } // end Group 10.3.5 P-CSCF releasing the source access leg during PS to PS access transfer + + + Group "10.3.6 P-CSCF releasing early dialog during PS to PS access transfer" + { + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_PPT_BYE_02 + + Test objective "Verify that the SCC AS successfully processes an CANCEL on a early dialog." + + Reference + "ETSI TS 124 237 [1], Clauses 10.3.6" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_RELEASING_EARLY_DIALOG_DURING_PS2PS_ACCES_TRANSFER + + Initial conditions with { + the UE entity isRegisteredTo the IMS and // include g.3gpp.pstops-sti + the UE entity hasInitiatedDialogWith + } + + Expected behaviour + ensure that { + when { + (.) at time point t1: the IUT entity receives an BYE containing // status code 503 + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + from the IMS_S_CSCF entity + } + then { + (!) "after time interval of 8 seconds" after t1: the IUT entity sends an r_200 containing // 200 OK (BYE) + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + and + the IUT entity sends an CANCEL containing // CANCEL to UE_B + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_PPT_BYE_02 + + Test Purpose { + + TP Id TP_ISC_SCCAS_PPT_CAN_01 + + Test objective "Verify that the SCC AS successfully processes an CANCEL on a early dialog." + + Reference + "ETSI TS 124 237 [1], Clauses 10.3.6" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and // include g.3gpp.pstops-sti + the UE entity hasInitiatedDialogWith + } + + Expected behaviour + ensure that { + when { + (.) at time point t1: the IUT entity receives an CANCEL containing // status code 503 + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + from the IMS_S_CSCF entity + } + then { + (!) "after time interval of 8 seconds" after t1: the IUT entity sends an r_200 containing // 200 OK (CANCEL) + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_PPT_CAN_01 + + Test Purpose { + + TP Id TP_ISC_SCCAS_PPT_RES_01 + + Test objective "Verify that the SCC AS successfully processes an SIP 503 (Service Unavailable) response on a early dialog." + + Reference + "ETSI TS 124 237 [1], Clauses 10.3.6" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and // include g.3gpp.pstops-sti + the UE entity hasInitiatedDialogWith + } + + Expected behaviour + ensure that { + when { + (.) at time point t1: the IUT entity receives an r_503 containing // from UE_B + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + from the IMS_S_CSCF entity + } + then { + (!) "after time interval of 8 seconds" after t1: the IUT entity sends an r_503 containing // to UE_A + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_PPT_RES_01 + + } // end Group 10.3.6 P-CSCF releasing early dialog during PS to PS access transfer + +} // End of Package TP_SCCAS + diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_11_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_11_3.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..63d34e8fa3475f579bd4701266eeb9b93e2ac699 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_11_3.tplan2 @@ -0,0 +1,164 @@ +/* +Copyright (c) ETSI 2019-2022. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* interface at SCCAS */ +Package TP_SCCAS { + + + + Group "11.3.2 SCC AS procedures for PS to PS+CS access transfer" + { + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_CON_RIN_01 + + Test objective "Verify that the SCC AS successfully processes an INVITE that includes an active speech media component using CS bearer." + + Reference + "ETSI TS 124 237 [1], Clauses 11.3.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2PS_ACCES_TRANSFER_IN_CONJUNCTION_PS2CS + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the UE entity hasEstablishedDialog + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing // request active speech media component using CS bearer + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Replaces indicating value PX_UE_A_SIP_URI; // indicating access transfer procedure + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an INVITE containing // reINVITE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact indicating value PX_UE_A_SIP_URI; // added by SCC AS + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_CON_RIN_01 + + + } // end Group "11.3.2 SCC AS procedures for PS to PS+CS access transfer" + + + Group "11.3.3 SCC AS procedures for PS+CS to PS access transfer" + { + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_CON_RIN_02 + + Test objective "Verify that the SCC AS successfully processes an INVITE due to two STIs on the Target Access Leg." + + Reference + "ETSI TS 124 237 [1], Clauses 11.3.3" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2PS_ACCES_TRANSFER_IN_CONJUNCTION_PS2CS + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the UE entity hasEstablishedDialog + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing // request CS -> PS + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + //Replaces indicating value PX_UE_A_SIP_URI; // indicating access transfer procedure + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an INVITE containing // reINVITE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + //Contact indicating value PX_UE_A_SIP_URI; // added by SCC AS + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_CON_RIN_02 + + Test Purpose { + + TP Id TP_ISC_SCCAS_CON_RIN_03 + + Test objective "Verify that the SCC AS rejects an INVITE due missing ability to associate it to an ongoing or different SIP dialog." + + Reference + "ETSI TS 124 237 [1], Clauses 11.3.3" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2PS_ACCES_TRANSFER_IN_CONJUNCTION_PS2CS + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the UE entity hasEstablishedDialog + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing // request CS -> PS + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + //Replaces indicating value PX_UE_A_SIP_URI; // indicating access transfer procedure + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_480 containing // reINVITE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + //Contact indicating value PX_UE_A_SIP_URI; // added by SCC AS + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_CON_RIN_03 + + } // end Group 11.3.3 SCC AS procedures for PS+CS to PS access transfer + + +} // End of Package TP_SCCAS + diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..1444d7e43be321cc22c59503d3fc83380329ebf9 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -0,0 +1,1039 @@ +/* +Copyright (c) ETSI 2019-2022. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* interface ISC at SCCAS */ +Package TP_SCCAS_Chapter_12_3 { + + Group "12.3.0 General"{ + + import all from Sip_Common; + } // end Group "12.3.0 General" + + Group "12.3.1 SCC AS procedures for PS to CS access transfer, PS to CS SRVCC"{ + + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_SRA_INV_01 + + Test objective "Verify that the SCCAS distinguish SIP INVITE with STN-SR for nonexisting dialog" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.1" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2CS_SRVCC + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasEstablishedDialog the SCCAS_UE_TERM + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE containing + RequestUri indicating value PX_STI_URI, + From indicating value PX__SIP_URI, + To indicating value PX__SIP_URI, + CallId indicating value PX_STI_CALLID, + Via indicating value PX_STI_VIA, + Contact, + TargetDialog containing "dialog info from nonexisting PS session", + Require indicating value "tdialog", + PAssertedIdentity indicating value PX_UE_CMSISDN + SipMessageBody;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_480_TemporaryUnavailable + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_SRA_INV_01 + + Test Purpose { + + TP Id TP_ISC_SCCAS_SRA_INV_02 + + Test objective "Verify that the SCCAS distinguish SIP INVITE with STN-SR and informs remote UE" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.1" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2CS_SRVCC + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasEstablishedDialog the SCCAS_UE_TERM + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE containing + RequestUri indicating value PX_STNSR_URI, + From indicating value PX__SIP_URI, + To indicating value PX__SIP_URI, + CallId indicating value PX_STI_CALLID, + Via indicating value PX_STNSR_VIA, + Contact, + TargetDialog containing "dialog info from PS session", + Require indicating value "tdialog", + PAssertedIdentity indicating value PX_UE_CMSISDN + SipMessageBody;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a ReINVITE //for remote UE leg + to the IMS_S_CSCF entity and + + the IUT entity receives a r_200_Ok and + + the IUT entity sends a r_200_Ok + } + } + } // End of TP_ISC_SCCAS_SRA_INV_02 + } // end Group "12.3.1 SCC AS procedures for PS to CS access transfer, PS to CS SRVCC" + + Group "12.3.2 SCC AS procedures for PS to CS access transfer with MSC server assisted mid-call feature, PS to CS SRVCC"{ + + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_SRA_INV_03 + + Test objective "Verify that the SCCAS distinguish Transfer of first session" + + Reference + "ETSI TS 124 237 [1], Clauses 12.3.2.1,12.3.2.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2CS_SRVCC + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasEstablishedDialog the SCCAS_UE_TERM + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE containing + RequestUri indicating value PX_STI_URI, + From indicating value PX__SIP_URI, + To indicating value PX__SIP_URI, + CallId indicating value PX_STI_CALLID, + Via indicating value PX_STI_VIA, + Contact containing + g3gppMidcallMediaFeature Tag + TargetDialog containing "dialog info existing PS session", + Require indicating value "tdialog", + PAssertedIdentity indicating value PX_UE_CMSISDN + SipMessageBody;;; + from the IMS_S_CSCF entity and + the IUT entity receives a r_200_Ok + } + then { + the IUT entity sends a r_200_Ok + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_SRA_INV_03 + + } // end Group "12.3.2 SCC AS procedures for PS to CS access transfer with MSC server assisted mid-call feature, PS to CS SRVCC" + + Group "12.3.3 SCC AS procedures for PS to CS SRVCC, abnormal case"{ + + //import all from Sip_Common; + Group "12.3.3.1 PS to CS SRVCC cancelled by MME/SGSN or failure by UE to transition to CS domain for ongoing session"{ + + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_SRA_INV_04 + + Test objective "Verify that the SCCAS distinguish SIP INVITE with STN-SR and not release source leg" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.1" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2CS_SRVCC + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasEstablishedDialog the SCCAS_UE_TERM + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a ReINVITE containing + RequestUri indicating value PX_STNSR_URI, + From indicating value PX__SIP_URI, + To indicating value PX__SIP_URI, + CallId indicating value PX_STI_CALLID, + Via indicating value PX_STNSR_VIA, + Contact, + TargetDialog containing "dialog info from PS session", + Require indicating value "tdialog", + PAssertedIdentity indicating value PX_UE_CMSISDN + SipMessageBody, + Reason containing Cause indicating value "487"; + ;; + from the IMS_S_CSCF entity + } + then { + the IUT entity not sends a BYE //for source UE leg + to the IMS_S_CSCF entity + + } + } + } // End of TP_ISC_SCCAS_SRA_INV_04 + } + Group "12.3.3.2 P-CSCF releasing the source access leg during PS to CS SRVCC"{ + + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_SRA_BYE_01 + + Test objective "Verify that the SCCAS distinguish SIP INVITE with STN-SR and not release source leg" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.3.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2CS_SRVCC + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasEstablishedDialog the SCCAS_UE_TERM + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a BYE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Reason containing Cause indicating value "503"; + ; + from the IMS_S_CSCF entity + } + then { + the IUT entity receives a INVITE and + the IUT entity not sends a BYE //for¸ source UE leg + to the IMS_S_CSCF entity + + } + } + } // End of TP_ISC_SCCAS_SRA_BYE_01 + + } + Group "12.3.3.3 P-CSCF releasing the source access leg when call is in alerting phase"{ + + } + Group "12.3.3.4 PS to CS SRVCC cancelled by MME/SGSN or release of the target access leg for an ongoing session"{ + + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_SRA_BYE_02 + + Test objective "Verify that the SCCAS distinguish SIP BYE with STN-SR and release source leg after OperatiorSpecificTimer timeout" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.3.4" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2CS_SRVCC + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasEstablishedDialog the SCCAS_UE_TERM and + the UE entity hasEstablishedPS2CSDialog + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a BYE containing + RequestUri indicating value PX_STNSR_URI, + From indicating value PX__SIP_URI, + To indicating value PX__SIP_URI, + CallId indicating value PX_STI_CALLID, + Via indicating value PX_STNSR_VIA, + Contact, + TargetDialog containing "dialog info from PS session", + Require indicating value "tdialog", + PAssertedIdentity indicating value PX_UE_CMSISDN + SipMessageBody, + Reason containing Cause indicating value "Reason Q.850 31"; + ;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok_BYE and + the IUT entity on timerOperatorSpecificTimeout sends a BYE //for source UE leg + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_SRA_BYE_02 + + Test Purpose { + + TP Id TP_ISC_SCCAS_SRA_BYE_03 + + Test objective "Verify that the SCCAS distinguish SIP BYE with STN-SR and release source leg on BYE Cause different from Cause Q850 31" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.3.4" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2CS_SRVCC + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasEstablishedDialog the SCCAS_UE_TERM and + the UE entity hasEstablishedPS2CSDialog + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a BYE containing + RequestUri indicating value PX_STNSR_URI, + From indicating value PX__SIP_URI, + To indicating value PX__SIP_URI, + CallId indicating value PX_STI_CALLID, + Via indicating value PX_STNSR_VIA, + Contact, + TargetDialog containing "dialog info from PS session", + Require indicating value "tdialog", + PAssertedIdentity indicating value PX_UE_CMSISDN + SipMessageBody, + Reason containing Cause not indicating value "Reason Q.850 31"; + ;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok_BYE and + the IUT entity sends a BYE //for source UE leg + to the IMS_S_CSCF entity + + } + } + } // End of TP_ISC_SCCAS_SRA_BYE_03 + + } + + Group "12.3.3.5 PS to CS SRVCC cancelled by MME/SGSN or release of the target access leg for a session in an early dialog phase"{ + + Group "12.3.3.5.1 SCC AS serving an originating user"{ + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_SRA_CAN_01 + + Test objective "Verify that the SCCAS distinguish SIP CANCEL and release session transfered leg after OperatiorSpecificTimer timeout" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.3.5.1, 1A" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2CS_SRVCC + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasInitiatedDialogWith the SCCAS_UE_TERM and + the UE entity hasInitiatedPS2CSinEarlydialog + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a CANCEL containing + RequestUri indicating value PX_STNSR_URI, + From indicating value PX__SIP_URI, + To indicating value PX__SIP_URI, + CallId indicating value PX_STI_CALLID, + Via indicating value PX_STNSR_VIA, + Contact, + TargetDialog containing "dialog info from PS session", + Require indicating value "tdialog", + PAssertedIdentity indicating value PX_UE_CMSISDN + SipMessageBody, + Reason containing Cause not indicating value "Reason Q.850 31"; + ;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok_CANCEL and + the IUT entity on timerOperatorSpecificTimeout sends a CANCEL + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_SRA_CAN_01 + } + Group "12.3.3.5.2 SCC AS serving a terminating user"{ + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_SRA_CAN_02 + + Test objective "Verify that the SCCAS send 200Ok_CANCEL and release PStoCS session transfered leg in alerting state for terminating user" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.3.5.2, 1A" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_PS2CS_SRVCC + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasInitiatedDialogWith the SCCAS_UE_TERM and + the UE entity hasInitiatedPS2CSinAlertingState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a CANCEL containing + RequestUri indicating value PX_STNSR_URI, + From indicating value PX__SIP_URI, + To indicating value PX__SIP_URI, + CallId indicating value PX_STI_CALLID, + Via indicating value PX_STNSR_VIA, + Contact, + TargetDialog containing "dialog info from PS session", + Require indicating value "tdialog", + PAssertedIdentity indicating value PX_UE_CMSISDN + SipMessageBody, + Reason containing Cause not indicating value "Reason Q.850 31"; + ;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok_CANCEL //and + //the IUT entity on timerOperatorSpecificTimeout sends a CANCEL + //to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_SRA_CAN_02 + } + + } + + } // end Group "12.3.3 SCC AS procedures for PS to CS SRVCC, abnormal case" + + Group "12.3.4 SCC AS procedures for PS to CS access transfer when call is in alerting phase or pre-alerting phase"{ + + Group "12.3.4.2 SCC AS procedures for PS to CS access transfer for terminating call in alerting phase or pre-alerting phase using PS to CS SRVCC procedure" + { + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_PCT_INV_06 + + Test objective "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" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.4.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Contact containing + g3gppps2csSrvccTermPreAlerting;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_183_SessionProgress + to the IMS_S_CSCF entity + + } + } + } // End of TP_ISC_SCCAS_PCT_INV_06 + + } // end Group "12.3.4.2 SCC AS procedures for PS to CS access transfer for terminating call in alerting phase or pre-alerting phase using PS to CS SRVCC procedure" + + Group "12.3.4.3 SCC AS procedures for PS to CS access transfer for originating call in alerting phase or pre-alerting phase using PS to CS SRVCC procedure" + { + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_PCT_INV_02 + + Test objective "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" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.4.3" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Contact containing + g3gppPs2csSrvccOrigPreAlerting;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_183_SessionProgress // possible r_18x + to the IMS_S_CSCF entity + + } + } + } // End of TP_ISC_SCCAS_PCT_INV_02 + + } // end Group "12.3.4.3 SCC AS procedures for PS to CS access transfer for originating call in alerting phase or pre-alerting phase using PS to CS SRVCC procedure" + + Group "12.3.4.4 SCC AS procedures for PS to CS access transfer of additional call" + { + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_PCT_INV_03 + + Test objective "Verify that SCC AS correctly procedures for PS to CS access transfer of additional call" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.4.4" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the IUT entity hasAchievedInitialINVITE // TODO: INVITE contains: g3gppSrvccAlerting + // TODO: and more conditions to distinguish subchapter from 12.3.4.2, 12.3.4.3 + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an r_180_Ringing + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an REFER containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + ReferSub indicating value false, + Supported indicating value "norefersub"; + to the IMS_S_CSCF entity + } + } + } // End of TP TP_ISC_SCCAS_PCT_INV_03 + + } // end Group 12.3.4.4 SCC AS procedures for PS to CS access transfer of additional call + + } // end Group "12.3.4 SCC AS procedures for PS to CS access transfer when call is in alerting phase or pre-alerting phase" +// +// Group "12.3.5 SCC AS procedures for PS to CS access transfer: PS to CS SRVCC enhancement using ATCF"{ +// +// import all from Sip_Common; +// }// end Group "12.3.5 SCC AS procedures for PS to CS access transfer: PS to CS SRVCCenhancement using ATCF" +// +// Group "12.3.6 SCC AS procedures for PS to CS access transfer, vSRVCC"{ +// +// import all from Sip_Common; +// }// end Group "12.3.6 12.3.6.0 SCC AS procedures for PS to CS access transfer, vSRVCC" +// + Group "12.3.7 SCC AS procedures for handling of SIP OPTIONS request"{ + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_MED_OPT_01 + + Test objective "Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.7" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an OPTIONS containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + ReferTo containing + PAssertedIdentity indicating value "the C-MSISDN in the P-Asserted-Identity header field that the session that was most recently made";; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok containing + ContentType indicating value "application/sdp", + ContentLength, + MessageBody containing + SDP containing + Media indicating valuee "audio and video";;; + to the IMS_S_CSCF entity + + } + } + + } // end TP TP_ISC_SCCAS_MED_OPT_01 + + + } // end Group "12.3.7 SCC AS procedures for handling of SIP OPTIONS request" +// +// Group "12.3.8 Removal of non-transferred audio media components and superfluous sessions"{ +// +// import all from Sip_Common; +// } // end Group "12.3.8 Removal of non-transferred audio media components and superfluous sessions" +// +// Group "12.3.9 Charging correlation"{ +// +// import all from Sip_Common; +// } // end Group "12.3.9 Charging correlation" +// + Group "12.3.10 SCC AS procedures for CS to PS SRVCC"{ + + + Group "12.3.10.2 First session transfer" + { + import all from Sip_Common; + + + Test Purpose { + + TP Id TP_ISC_SCCAS_CPT_INV_07 + + Test objective "Verify that the SCC AS handles correctly the transfer of session with active speech media component" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.10.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + TargetDialog; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok // + to the IMS_S_CSCF entity + + } + } + + } // end TP TP_ISC_SCCAS_CPT_INV_07 + + Test Purpose { + + TP Id TP_ISC_SCCAS_CPT_INV_08 + + Test objective "Verify that the SCC AS handles correctly the transfer of session with inactive speech media component " + + Reference + "ETSI TS 124 237 [1], Clause 12.3.10.3" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + TargetDialog; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an INVITE containing // reINVITE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_CPT_INV_08 + + Test Purpose { + + TP Id TP_ISC_SCCAS_CPT_INV_09 + + Test objective "Verify that the SCC AS handles correctly the transfer of originating session in alerting phase" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.10.2.4" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the IUT entity hasAchievedInitialINVITE and // INVITE initiated by served User and contains TargetDialog header field + the IUT entity hasAchievedUPDATEuponINVITE + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an r_200_Ok + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_180_Ringing + to the IMS_S_CSCF entity + } + } + + + } // end TP TP_ISC_SCCAS_CPT_INV_09 + + Test Purpose { + + TP Id TP_ISC_SCCAS_CPT_INV_10 + + Test objective "Verify that the SCC AS handles correctly the transfer of terminating session in alerting phase" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.10.2.5" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the IUT entity hasAchievedInitialINVITE and // INVITE initiated by remote user and contains TargetDialog header field + the IUT entity hasAchievedUPDATEuponINVITE + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an r_200_Ok + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_183_SessionProgress + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_CPT_INV_10 + + + } // end Group "12.3.10.2 First session transfer" + + Group "12.3.10.3 Additional session transfer" + { + import all from Sip_Common; + + + Test Purpose { + + TP Id TP_ISC_SCCAS_CPT_INV_11 + + Test objective "Verify that the SCC AS handles correctly additional session transfer initiation" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.10.3.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Accept containing + MIME indicating value "application/vnd.3gpp.mid-call+xml";; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok + to the IMS_S_CSCF entity + + } + } + + } // end TP TP_ISC_SCCAS_CPT_INV_11 + + Test Purpose { + + TP Id TP_ISC_SCCAS_CPT_INV_12 + + Test objective "Verify that the SCC AS handles correctly transfer of session with inactive speech media component" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.10.3.3" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Accept containing + MIME indicating value "application/vnd.3gpp.mid-call+xml";; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an INVITE containing // reINVITE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_CPT_INV_12 + + Test Purpose { + + TP Id TP_ISC_SCCAS_CPT_INV_13 + + Test objective "Verify that the SCC AS handles correctly transfer of originating session in alerting phase" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.10.3.4" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the IUT entity hasAchievedInitialINVITE and // INVITE initiated by served User and contains Accept containing MIME indicating value "application/vnd.3gpp.mid-call+xml" + the IUT entity hasAchievedUPDATEuponINVITE + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an r_200_Ok + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_180_Ringing + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_CPT_INV_13 + + Test Purpose { + + TP Id TP_ISC_SCCAS_CPT_INV_14 + + Test objective "Verify that the SCC AS handles correctly transfer of terminating session in alerting phase" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.10.3.5" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the IUT entity hasAchievedInitialINVITE and // INVITE initiated by remote user and contains Accept containing MIME indicating value "application/vnd.3gpp.mid-call+xml" + the IUT entity hasAchievedUPDATEuponINVITE + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an r_200_Ok + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_183_SessionProgress + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_CPT_INV_14 + + + } // end Group "12.3.10.3 Additional session transfer" + + + } // end Group "12.3.10 SCC AS procedures for CS to PS SRVCC" + + Group "12.3.11 SCC AS procedures when the access transfer is completed"{ + + import all from Sip_Common; + + + Test Purpose { + + TP Id TP_ISC_SCCAS_TER_BYE_01 + + Test objective "Verify that the SCC AS correctly behave procedures when the access transfer is completed" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.11" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the IUT entity hasAchievedInitialINVITE + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a BYE containing + RequestUri indicating value PX_STNSR_URI, + From indicating value PX__SIP_URI, + To indicating value PX__SIP_URI, + CallId indicating value PX_STI_CALLID, + Via indicating value PX_STNSR_VIA, + Contact, + TargetDialog containing "dialog info from PS session", + Require indicating value "tdialog", + PAssertedIdentity indicating value PX_UE_CMSISDN + SipMessageBody, + Reason containing Cause indicating value "Reason Q.850 1"; // should be different then 31 + ;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok_BYE and + the IUT entity sends a r_404_NotFound //according to 3GPP TS 29.292 table 5.4.8.1.1 and table 5.4.8.1.2 + to the IMS_S_CSCF entity + + } + } + } // End of TP TP_ISC_SCCAS_TER_BYE_01 + + } // end Group "12.3.11 SCC AS procedures when the access transfer is completed" + +}// End of Package TP_SCCAS_Chapter_9_3 + diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..2beb2e6dcb53bf4266f0b362b33cd9dd9b7aba11 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 @@ -0,0 +1,446 @@ +/* +Copyright (c) ETSI 2019-2022. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* interface ISC at SCCAS */ +Package TP_SCCAS_Chapter_6A_4 { + + Group "6A.4.1 Common SIP message set up procedures"{ + + import all from Sip_Common; + } // end Group "6A.4.1 Common SIP message set up procedures" + + Group "6A.4.2 SIP INVITE request"{ + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_GEN_INV_01 + + Test objective "Verify that the SCCAS send INVITE for anchored user populated with FeatureCaps header." + + Reference + "ETSI TS 124 237 [1], Clause 6A.4.2, Clause 4.2.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a INVITE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + //... + FeatureCaps containing //according to RFC6809 + g3gppFeatureCapabilityIndicator, //see Annex C + g3gppRemoteLegInfoCapabilityIndicator;, //see Annex C + Accept containing + MIME indicating value "application/vnd.3gpp.state-and-event-info.xml";, //subclause D.2.3 + RecvInfo containing + g3gppStateAndEventPackageName;; //according to RFC6086 + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_GEN_INV_01 + + } // end Group "6A.4.2 SIP INVITE request" + + Group "6A.4.3 SIP INVITE responses towards the SC UE"{ + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_GEN_INV_02 + + Test objective "Verify that the SCCAS sends 1xx and/or 2xx response to the SIP INVITE request towards the served user ." + + Reference + "ETSI TS 124 237 [1], Clause 6A.4.3, Clause 4.2.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //SCCAS_PS2CS_SRVCC, SCCAS_PS2CS_SRVCC_ALERTING,SCCAS_PS2CS_SRVCC_PRE-ALERTING + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasInitiatedDialogWith the UE_TERM + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a r_183_SessionProgress containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + //Contact containing + // g3gppMidcallMediaFeature Tag, //list -B + // g3gppSrvccAlertingFeature tag, //list -C + // g3gppPs2csSrvccOrigPreAlertingMediaFeature Tag, //list -D + FeatureCaps, + SipMessageBody; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_183_SessionProgress containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + //... + FeatureCaps containing //IETF RFC6809 + g3gppFeatureCapabilityIndicator, //see Annex C + g3gppMidcallFeatureCapabilityIndicator, //list - B + g3gppSrvccAlertingFeatureCapabilityIndicator, //list -C + g3gppPs2csSrvccOrigPreAlertingMediaIndicator, //list -D + g3gppRemoteLegInfoFeatureCapabilityIndicator //list -E + //Contact containing + Accept containing + MIME indicating value "application/vnd.3gpp.state-and-event-info.xml" //subclause D.2.3 + RecvInfo containing + g3gppStateAndEventPackageName;; //according to RFC6086 + ;; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_GEN_INV_02 + + //TODO: diferent variants due to 1-4 numbered variants + + } // end Group "6A.4.3 SIP INVITE responses towards the SC UE" + + Group "6A.4.3A SIP INVITE responses towards the MSC server"{ + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_GEN_INV_03 + + Test objective "Verify that the SCCAS sends 1xx and/or 2xx response to the SIP INVITE request due to STN-SR or STN." + + Reference + "ETSI TS 124 237 [1], Clause 6A.4.3A(1st Numbered list, item 1), Clause 4.2.2" + + Config Id CFG_SCCAS_03 + + PICS Selection NONE //SCCAS_PS2CS_SRVCC, SCCAS_PS2CS_SRVCC_ALERTING,SCCAS_PS2CS_SRVCC_PRE-ALERTING + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasInitiatedDialogWith the UE_TERM + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_STNSR_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact containing + g3gppMidcallMediaFeature_Tag, + g3gppSrvccAlertingFeature_Tag, + g3gppPs2csSrvccOrigPreAlertingMediaFeature_Tag + FeatureCaps, + SipMessageBody;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_STNSR_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + //... + Contact indicating value UE_CONTACT, + PAssertedIdentity indicating value UE_PAI, + FeatureCaps containing //according to RFC6809 + g3gppFeatureCapabilityIndicator, //see Annex C + g3gppRemoteLegInfoCapabilityIndicator //see Annex C + Accept containing + MIME indicating value "application/vnd.3gpp.state-and-event-info.xml" //subclause D.2.3 + RecvInfo containing + g3gppStateAndEventPackageName;; //according to RFC6086 + ;; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_GEN_INV_03 + } // end Group "6A.4.3A SIP INVITE responses towards the MSC server" + + Group "6A.4.4 Handling of OMR specific attributes"{ + + import all from Sip_Common; + } // end Group "6A.4.4 Handling of OMR specific attributes" + + Group "6A.4.5 Target refresh request for a dialog and associated responses"{ + + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_GEN_RIN_01 + + Test objective "Verify that the SCCAS sends 1xx and/or 2xx response to the SIP INVITE target refresh request towards the served user." + + Reference + "ETSI TS 124 237 [1], Clause 6A.4.5, Clause 4.2.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasEstablishedDialog the SCCAS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact containing + g3gppMidcallMediaFeature Tag, //list -B + g3gppSrvccAlertingFeature tag, //list -C + g3gppPs2csSrvccOrigPreAlertingMediaFeature Tag, //list -D + FeatureCaps, + SipMessageBody;; + from the IMS_S_CSCF entity + } + then{ + the IUT entity sends a INVITE + to the IMS_S_CSCF entity and + + the IUT entity receives a r_183_SessionProgress + from the IMS_S_CSCF entity and + + the IUT entity sends a r_183_SessionProgress containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + //... + FeatureCaps containing //IETF RFC6809 + g3gppFeatureCapabilityIndicator, //see Annex C + g3gppMidcallFeatureCapabilityIndicator, //list - B + g3gppSrvccAlertingFeatureCapabilityIndicator, //list -C + g3gppPs2csSrvccOrigPreAlertingMediaIndicator, //list -D + //Contact containing + Accept containing + MIME indicating value "application/vnd.3gpp.state-and-event-info.xml" //subclause D.2.3 + RecvInfo containing + g3gppStateAndEventPackageName;; //according to RFC6086 + ;; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_GEN_RIN_01 + + Test Purpose { + + TP Id TP_ISC_SCCAS_GEN_RIN_02 + + Test objective "Verify that the SCCAS sends the SIP INVITE target refresh request towards the served user." + + Reference + "ETSI TS 124 237 [1], Clause 6A.4.5, Clause 4.2.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasEstablishedDialog the SCCAS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact containing + g3gppMidcallMediaFeature Tag, //list -B + g3gppSrvccAlertingFeature tag, //list -C + g3gppPs2csSrvccOrigPreAlertingMediaFeature Tag, //list -D + FeatureCaps, + SipMessageBody;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a INVITE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + //... + FeatureCaps containing //IETF RFC6809 + g3gppFeatureCapabilityIndicator, //see Annex C + g3gppMidcallFeatureCapabilityIndicator, //list - B + g3gppSrvccAlertingFeatureCapabilityIndicator, //list -C + + //Contact containing + Accept containing + MIME indicating value "application/vnd.3gpp.state-and-event-info.xml" //subclause D.2.3 + RecvInfo containing + g3gppStateAndEventPackageName;; //according to RFC6086 + ;; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_GEN_RIN_02 + } // end Group "6A.4.5 Target refresh request for a dialog and associated responses" + + Group "6A.4.6 Rejecting malicious SIP REFER requests from remote UE"{ + + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_GEN_REF_01 + + Test objective "Verify that the SCCAS sends 403 response to the SIP REFER request from remote UE." + + Reference + "ETSI TS 124 237 [1], Clause 6A.4.6(1st Numbered list)" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //PICS_SCCAS_REJECTION_OF_MALICIOUS_REFER + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasInitiatedDialogWith the SCCAS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a REFER containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + //Contact + ReferSub indicating value "false", + Supported indicating value "norefersub", + ReferTo containing "a SIP URI with the Target-Dialog_URI_header_field", + SipMessageBody containing + MIME indicating value "application/vnd.3gpp.state-and-event-info.xml"; //subclause D.2.3; + ;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_403_Forbidden containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA + //... + ; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_GEN_REF_01 + } // end Group "6A.4.6 Rejecting malicious SIP REFER requests from remote UE" + + Group "6A.4.7 Protecting from malicious SIP INFO requests with remote leg information from remote UE"{ + + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_GEN_INF_01 + + Test objective "Verify that the SCCAS not include Accept,RecvInfo towards remote UE." + + Reference + "ETSI TS 124 237 [1], Clause 6A.4.7" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //SCCAS_PS2CS_SRVCC, SCCAS_PS2CS_SRVCC_ALERTING + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasInitiatedDialogWith the SCCAS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact containing + g3gppMidcallMediaFeature Tag, //list -B + g3gppSrvccAlertingFeature tag, //list -C + g3gppPs2csSrvccOrigPreAlertingMediaFeature Tag, //list -D + FeatureCaps, + SipMessageBody;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a INVITE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + //... + FeatureCaps containing //IETF RFC6809 + g3gppFeatureCapabilityIndicator, //see Annex C + g3gppMidcallFeatureCapabilityIndicator, //list - B + g3gppSrvccAlertingFeatureCapabilityIndicator, //list -C + //Contact + Accept not indicating value "application/vnd.3gpp.state-and-event-info.xml", //subclause D.2.3 + RecvInfo not indicating value g3gppStateAndEventPackageName; //according to RFC6086 + ; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_GEN_INF_01 + + } // end roup "6A.4.7 Protecting from malicious SIP INFO requests with remote leg information from remote UE" + + Group "6A.4.8 Precondition and access transfer"{ + + import all from Sip_Common; + } // end Group "6A.4.8 Precondition and access transfer" + + +} // End of Package TP_SCCAS_Chapter_6A_4 + diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..1d1798ebe9143d6d3790765b448d837827f17e74 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 @@ -0,0 +1,343 @@ +/* +Copyright (c) ETSI 2019-2022. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* interface ISC at SCCAS */ +Package TP_SCCAS_Chapter_6_3 { + + import all from Sip_Common; + + Group "6.3.1 General" { + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_RSC_REG_01 + + Test objective "Verify that the SCCAS successfully obtain/processes 3pty registration information." + + Reference + "ETSI TS 124 237 [1], Clause 6.3.1" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a REGISTER containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + SipMessageBody containing + MIME indicating value "REGISTER from_UE_A", + MIME indicating value "r_200_Ok to_UE_A";; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact indicating value PX_UE_A_SIP_URI //, + //Path indicating value PX_P_CSCF_A_SIP_URI, + //PChargingVector containing + // icid indicating value PX_TO_BE_DEFINED, + //PVisitedNetworkID indicating value PX_TO_BE_DEFINED, + //Require indicating value "path", + //Supported indicating value "path" ;; + ; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_RSC_REG_01 + + Test Purpose { + + TP Id TP_ISC_SCCAS_RSC_REG_02 + + Test objective "Verify that the SCCAS successfully obtain/processes de-registration information (Expires=0)." + + Reference + "ETSI TS 124 237 [1], Clause 6.3.1" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a REGISTER containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Expires indicating value 0; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA ; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_RSC_REG_02 + + } //End Group "6.3.1 General" + + + Group "6.3.2 Triggers for the SCCAS providing information to ATCF"{ + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_RSC_REG_03 + + Test objective "Verify that the SCCAS successfully obtain/processes SRVCC information." + + Reference + "ETSI TS 124 237 [1], Clause 6.3.2 (1st numbered list)" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a REGISTER containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + FeatureCaps containing + g3gppAtcfFeatureCapabilityIndicator;, + SipMessageBody containing + MIME indicating value "REGISTER from_UE_A", + MIME indicating value "r_200_Ok to_UE_A" containing Contact;;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact indicating value PX_UE_A_SIP_URI; + to the IMS_S_CSCF entity + + } + + } + + } // End of TP_ISC_SCCAS_RSC_REG_03 + } // end Group "6.3.2 Triggers for the SCCAS providing information to ATCF" + + Group "6.3.3 SCCAS providing the PS to CS related SRVCC information to the ATCF"{ + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_RSC_REG_04 + + Test objective "Verify that the SCCAS successfully sends MESSAGE providing PS to CS SRVCC information." + + Reference + "ETSI TS 124 237 [1], Clause 6.3.3" + + Config Id CFG_SCCAS_02 + + PICS Selection NONE //PICS_SCCAS_PS2CS_SRVCC_ATCF + + Initial conditions with { + the UE entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a REGISTER containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + FeatureCaps containing + g3gppAtcfFeatureCapabilityIndicator indicating value "g.3gpp.atcf-mgmt-uri";, + SipMessageBody containing + MIME indicating value "REGISTER from_UE_A", + MIME indicating value "r_200_Ok to_UE_A" containing Contact;;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact indicating value PX_UE_A_SIP_URI //, + //Path indicating value PX_P_CSCF_A_SIP_URI, + //PChargingVector containing + // icid indicating value PX_TO_BE_DEFINED, + //PVisitedNetworkID indicating value PX_TO_BE_DEFINED, + //Require indicating value "path", + //Supported indicating value "path" ;; + ; + to the IMS_S_CSCF entity + + and the IUT entity sends a MESSAGE containing + RUri indicating value "ATCFManagementUri", + PAsertedIdentity, + SipMessageBody containing + MIME indicating value "application/vnd.3gpp.SRVCC-info+xml";, + PChargingVector indicating value "type 1 orig-ioi"; + to the ATCF entity + } + + } + + } // End of TP_ISC_SCCAS_RSC_REG_04 + } //end Group "6.3.3 SCCAS providing the PS to CS related SRVCC information to the ATCF" + + + Group "6.3.4 Triggers for the SCCAS providing information to MSC server"{ + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_RSC_REG_05 + + Test objective "Verify that the SCCAS successfully get CS to PS SRVCC information." + + Reference + "ETSI TS 124 237 [1], Clause 6.3.4" + + Config Id CFG_SCCAS_03 + + PICS Selection NONE //PICS_SCCAS_PS2CS_SRVCC_MSC + + Initial conditions with { + the UE entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a REGISTER containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact containing + g3gppCs2psSsrvccTag, + g3gppPathTag + FeatureCaps;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact indicating value PX_UE_A_SIP_URI + ; + to the IMS_S_CSCF entity + } + } + + } // End of TP_ISC_SCCAS_RSC_REG_05 + } //end Group "6.3.4 Triggers for the SCCAS providing information to MSC server" + + Group "6.3.5 SCCAS providing the CS to PS SRVCC information to the MSC server"{ + + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_RSC_REG_06 + + Test objective "Verify that the SCCAS successfully provide CS to PS SRVCC information." + + Reference + "ETSI TS 124 237 [1], Clause 6.3.5" + + Config Id CFG_SCCAS_03 + + PICS Selection NONE //CS2PSSRVCC + + Initial conditions with { + the UE entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a REGISTER containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact containing + SipInstanceTag, + g3gppIcsiRefTag;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a r_200_Ok containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Contact indicating value PX_UE_A_SIP_URI, + AcceptContact containing + g3gppPathMediaFeatureTag + //Path indicating value PX_P_CSCF_A_SIP_URI, + PChargingVector indicating value "type 1 orig-ioi", + //PVisitedNetworkID indicating value PX_TO_BE_DEFINED, + PassertedIdentity indicating value PX_SCCAS_URI + //Supported indicating value "path" ;; + SipMessageBody containing + MIME indicating value "application/vnd.3gpp.srvcc-ext+xml" + ;;; + to the IMS_S_CSCF entity + } + } + + } // End of TP_ISC_SCCAS_RSC_REG_06 + } //end Group "6.3.5 SCCAS providing the CS to PS SRVCC information to the MSC server" + +} // End of Package TP_SCCAS_Chapter_6_3 + diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..6b595344bde6cac63ad5be82f8d830e563d649a2 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 @@ -0,0 +1,173 @@ +/* +Copyright (c) ETSI 2019-2022. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* interface ISC at SCCAS */ +Package TP_SCCAS_Chapter_7_3 { + + Group "7.3.1 Distinction of requests sent to the SCC AS"{ + + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_ORI_INV_01 + + Test objective "Verify that the SCCAS first receives SIP INVITE request from UE/SCSCF" + + Reference + "ETSI TS 124 237 [1], Clauses 7.3.1, 7.3.2", + "ETSI TS 124 292 [1], Clauses 7.4.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value "sccas as topmost entry", + RecordRoute indicating value PX_UE_A_ACCEPT, + PAssertedIdentity indicating value PX_UE_A_PAS, + Accept indicating value PX_UE_A_ACCEPT, + Contact indicating value PX_UE_A_CONTACT, + AcceptContact indicating value PX_UE_A_ACCEPT_CONTACT, + FeatureCaps, + SipMessageBody; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a INVITE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_ORI_INV_01 + + } // end Group "7.3.1 Distinction of requests sent to the SCC AS" + + Group "7.3.2 Call origination procedures at the SCC AS"{ + + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_ORI_INV_02 + + Test objective "Verify that the SCCAS sends 1xx/2xx response to the SIP INVITE request towards the served user ." + + Reference + "ETSI TS 124 237 [1], Clauses 7.3.2, 6A.4.3, 4.2.2", + "ETSI TS 124 292 [1], Clauses 7.4.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //SCCAS_PS2CS_SRVCC, SCCAS_PS2CS_SRVCC_ALERTING,SCCAS_PS2CS_SRVCC_PRE-ALERTING + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value "sccas as topmost entry", + RecordRoute indicating value PX_UE_A_ACCEPT, + PAssertedIdentity indicating value PX_UE_A_PAS, + Accept indicating value PX_UE_A_ACCEPT, + AcceptContact indicating value PX_UE_A_ACCEPT_CONTACT, + Contact containing + g3gppMidcallMediaFeature Tag, //list -B + g3gppSrvccAlertingFeature tag, //list -C + g3gppPs2csSrvccOrigPreAlertingMediaFeature Tag, //list -D + FeatureCaps, + SipMessageBody;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a INVITE + to the IMS_S_CSCF entity and + + the IUT entity receives a r_183_SessionProgress + from the IMS_S_CSCF entity and + + the IUT entity sends a r_183_SessionProgress containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + //... + FeatureCaps containing //IETF RFC6809 + g3gppFeatureCapabilityIndicator, //see Annex C + g3gppMidcallFeatureCapabilityIndicator, //list - B + g3gppSrvccAlertingFeatureCapabilityIndicator, //list -C + g3gppPs2csSrvccOrigPreAlertingMediaIndicator, //list -D + //Contact containing + Accept containing + MIME indicating value "application/vnd.3gpp.state-and-event-info.xml" //subclause D.2.3 + RecvInfo containing + g3gppStateAndEventPackageName;; //according to RFC6086 + ;; + to the IMS_S_CSCF entity and + + the IUT entity receives a r_200_Ok + from the IMS_S_CSCF entity and + + the IUT entity sends a r_200_Ok containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + //... + FeatureCaps containing //IETF RFC6809 + g3gppFeatureCapabilityIndicator, //see Annex C + g3gppMidcallFeatureCapabilityIndicator, //list - B + g3gppSrvccAlertingFeatureCapabilityIndicator, //list -C + g3gppPs2csSrvccOrigPreAlertingMediaIndicator, //list -D + g3gppRemoteLegInfoFeatureCapabilityIndicator //list -E + Contact, + Supported indicating value "tdialog,replaces" + Accept containing + MIME indicating value "application/vnd.3gpp.state-and-event-info.xml" //subclause D.2.3 + RecvInfo containing + g3gppStateAndEventPackageName;; //according to RFC6086 + ;; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_ORI_INV_02 + } // end Group "7.3.2 Call origination procedures at the SCC AS" + + Group "7.3.3 Subscription related procedures in the SCC AS"{ + + import all from Sip_Common; + } // end Group "7.3.3 Subscription related procedures in the SCC AS" + +}// End of Package TP_SCCAS_Chapter_7_3 + diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..38d22275319612101fc8d24bd0e9e046b049082e --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 @@ -0,0 +1,76 @@ +/* +Copyright (c) ETSI 2019-2022. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* interface ISC at SCCAS */ +Package TP_SCCAS_Chapter_8_3 { + + Group "8.3.1 Distinction of requests sent to the SCC AS"{ + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_TER_INV_01 + + Test objective "Verify that the SCCAS last receives SIP INVITE request from UE/SCSCF" + + Reference + "ETSI TS 124 237 [1], Clauses 8.3.1, 8.3.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE_TERM entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE containing + RequestUri indicating value PX_UE_TERM_SIP_URI, + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_TERM_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value "sccas as topmost entry", + PServedUser indicating value PX_UE_TERM_SIP_URI, + Contact, + FeatureCaps, + SipMessageBody; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a INVITE containing + From indicating value PX_IMS_S_CSCF_SIP_URI, + To indicating value PX_UE_TERM_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_TER_INV_01 + } // end Group "8.3.1 Distinction of requests sent to the SCC AS" + + Group "8.3.2 Call termination procedures in the SCC AS"{ + + import all from Sip_Common; + + } // end Group "8.3.2 Call termination procedures in the SCC AS" + +}// End of Package TP_SCCAS_Chapter_8_3 + diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..8d0fa47167ec0bc6b34061ff980da8ee4eaef411 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 @@ -0,0 +1,1369 @@ +/* +Copyright (c) ETSI 2019-2022. + +This software is subject to copyrights owned by ETSI. Non-exclusive permission +is hereby granted, free of charge, to copy, reproduce and amend this file +under the following conditions: It is provided "as is", without warranty of any +kind, expressed or implied. + +ETSI shall never be liable for any claim, damages, or other liability arising +from its use or inability of use.This permission does not apply to any documentation +associated with this file for which ETSI keeps all rights reserved. The present +copyright notice shall be included in all copies of whole or part of this +file and shall not imply any sub-license right. +*/ + +/* interface ISC at SCCAS */ +Package TP_SCCAS_Chapter_9_3 { + + Group "9.3.1 Distinction of requests sent to the SCC AS"{ + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_PCT_INV_01 + + Test objective "Verify that the SCCAS distinguish SIP INVITE with STI for subscribed UE due to PS to CS" + + Reference + "ETSI TS 124 237 [1], Clause 9.3.1" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE //SCCAS_PS2CS_SRVCC + + Initial conditions with { + the UE entity isRegisteredTo the IMS_A and + the UE entity hasEstablishedDialog the SCCAS_UE_TERM + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a INVITE containing + RequestUri indicating value PX_STI_URI, + From indicating value PX__SIP_URI, + To indicating value PX__SIP_URI, + CallId indicating value PX_STI_CALLID, + Via indicating value PX_STI_VIA, + Contact, + TargetDialog containing "dialog info from PS session", + Require indicating value "tdialog", + PAssertedIdentity indicating value PX_UE_CMSISDN + SipMessageBody;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends a ReINVITE + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_PCT_INV_01 + } // end Group "9.3.1 Distinction of requests sent to the SCC AS" + + Group "9.3.2 SCC AS procedures for PS to CS access transfer"{ + + import all from Sip_Common; + } // end Group "9.3.2 SCC AS procedures for PS to CS access transfer" + + Group "9.3.2A SCC AS procedures for PS to CS access transfer with MSC server assisted mid-call feature"{ + + import all from Sip_Common; + } // end Group "9.3.2A SCC AS procedures for PS to CS access transfer with MSC server assisted mid-call feature" + + Group "9.3.3 SCC AS procedures for CS to PS access transfer" + { + import all from Sip_Common; + + Test Purpose { + + // When the SCC AS receives a + // SIP INVITE request due to + // STI on the (page 20) + // Target Access Leg offering (RFC 3891 - replaces header field, + // PS media only (PS Packet Switch), + // SCC AS shall follow the procedures specified in subclause 10.3.2. + + TP Id TP_ISC_SCCAS_CPT_INV_01 + + Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg) with dynamic STI." + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.3 and 10.3.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, // this indicates dynamic STI + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Supported indicating value "replaces", + PAccessNetworkInfo, + Replaces containing // Replaces indicating value (RFC 3891) + call_id indicating value PX_call_id, + from_tag indicating value PX_from_tag, + to_tag indicating value PX_to_tag + MessageBody containing + SDP containing // SDP: Session Description Protocol + Media indicating value PX_PSMediaOnly, + Version indicating value "0";;;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_200_Ok containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + ContentType indicating value "application/sdp", + ContentLength, + MessageBody containing + SDP containing + Media indicating value PX_PSMediaOnly, + Version indicating value "0";;; + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_CPT_INV_01 + + + // Testpurpose 2: When the SCC AS receives a SIP INVITE request due to static STI, the SCC AS shall: + Test Purpose { + + // When the SCC AS receives a + // SIP INVITE request due to + // STI on the (page 20) + // Target Access Leg offering (RFC 3891 - replaces header field, + // PS media only (PS Packet Switch), + // SCC AS shall follow the procedures specified in subclause 10.3.2. + + // TP_ISC_SCCAS_XXX_INV_01 + TP Id TP_ISC_SCCAS_CPT_INV_02 + + Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg) with static STI." + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.3" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_TEL_URI, // this indicates static STI + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Supported indicating value "replaces", + PAccessNetworkInfo, + Replaces containing // Replaces indicating value (RFC 3891) + call_id indicating value PX_call_id, + from_tag indicating value PX_from_tag, + to_tag indicating value PX_to_tag + MessageBody containing + SDP containing // SDP: Session Description Protocol + Media indicating value PX_PSMediaOnly, + Version indicating value "0";;;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_200_Ok containing + From indicating value PX_UE_A_TEL_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + ContentType indicating value "application/sdp", + ContentLength, + MessageBody containing + SDP containing + Media indicating value PX_PSMediaOnly, + Version indicating value "0";;; + to the IMS_S_CSCF entity + } + } + + } // end TP_ISC_SCCAS_CPT_INV_02 + + + // Test puposes 3: Upon receiving the SIP 2xx response to the SIP re-INVITE request the SCC AS shall send the SIP 200 (OK) response + // to the SIP INVITE request due to static STI on the target access leg populated as follows: + Test Purpose { + + // Note: Consider alternative with: + // if the SCC AS supports CS to PS dual radio access transfer for calls in alerting phase according to operator policy + + + TP Id TP_ISC_SCCAS_CPT_RIN_01 + + Test objective "Verify that the P-CSCF successfully processes an re-INVITE (Originating Leg)" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.3" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the UE entity previouslyEstablishedCallWith + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing // re-invite + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Supported indicating value "replaces", + PAccessNetworkInfo, + Replaces containing // Replaces indicating value (RFC 3891) + call_id indicating value PX_call_id, + from_tag indicating value PX_from_tag, + to_tag indicating value PX_to_tag + MessageBody containing + SDP containing // SDP: Session Description Protocol + Media indicating value PX_PSMediaOnly, + Version indicating value "0";;;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_200_Ok containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PAccessNetworkInfo, + ContentType indicating value "application/sdp", + ContentLength, + MessageBody containing + SDP containing + Media indicating value PX_PSMediaOnly, + Version indicating value "0";;; + to the IMS_S_CSCF entity + } + } + + } // end TP_ISC_SCCAS_CPT_RIN_01 + + + // Test puposes 4: Upon receiving the SIP ACK request originated from the SC UE, the SCC AS shall: + Test Purpose { + + TP Id TP_ISC_SCCAS_CPT_ACK_01 + + //Upon receiving the SIP ACK request originated from the SC UE, the SCC AS shall: + //1) release the source access leg as specified in subclause 9.3.6.; and ... + + //the source access leg is an ongoing session containing only an active or inactive media component or a session in + //an early dialog phase on the terminating side, send a SIP BYE request on the source access leg in accordance + //with 3GPP TS 24.229 [2]; + + Test objective "Verify that the P-CSCF successfully processes an ACK and release the source access leg." + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.3 and 9.3.6." + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the UE entity hasReceived200OkOnInitialRequestForDialogWith + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an ACK containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an BYE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + to the IMS_S_CSCF entity + } + } + + + } // end TP TP_ISC_SCCAS_CPT_ACK_01 + + + } // end Group "9.3.3 SCC AS procedures for CS to PS access transfer" + + Group "9.3.4 SCC AS procedures for CS to PS access transfer with MSC server assisted mid-call feature" + { + import all from Sip_Common; + + + Test Purpose { + TP Id TP_ISC_SCCAS_CPT_INV_03 + + Test objective "Verify that the SCC AS Conditions for selecting a sessions in an early dialog phase" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.4 and 6A.4.3" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // SCC AS supports the MSC Server assisted mid-call feature according to operator policy + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Contact containing + g3gppSrvccAlertingFeatureCapabilityIndicator Tag;; + + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_2xx_Any containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + FeatureCaps containing + g3gppMidcallFeatureCapabilityIndicator;, + MessageBody containing + SDP containing + Media indicating value PX_PSMediaOnly;;; + to the IMS_S_CSCF entity + } + + } + + } // end TP TP_ISC_SCCAS_CPT_INV_03 + + + + + } // end Group 9.3.4 SCC AS procedures for CS to PS access transfer with MSC server assisted mid-call feature + + Group "9.3.5 SCC AS procedures for PS to CS dual radio access transfer of calls in an early dialog phase" + { + + Group "9.3.5.1 Conditions for selecting a sessions in an early dialog phase" + { + import all from Sip_Common; + + + Test Purpose { + TP Id TP_ISC_SCCAS_CPT_INV_04 + + // An early session is subject for PS to CS dual radio access transfer when one of the following conditions is fulfilled: + // d. the Contact header field provided by the SC UE towards the SCC AS in the initial SIP INVITE request + // included the g.3gpp.drvcc-alerting media feature tag field as described in annex C; + + Test objective "Verify that the SCC AS accepts conditions in an early dialog phase" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.5.1" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE // PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // SCC AS supports the MSC Server g.3gpp.drvcc-alerting feature + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Contact containing + g3gppDrvccAlertingFeature tag;; //Annex C.15 + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_2xx_Any containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + FeatureCaps containing + g3gppDrvccAlertingFeatureCapabilityIndicator;; + to the IMS_S_CSCF entity + } + + } + + } // end TP TP_ISC_SCCAS_CPT_INV_04 + } // end group 9.3.5.1 Conditions for selecting a sessions in an early dialog phase + + + + Group "9.3.5.2 SCC AS procedures for PS to CS dual radio access transfer of a originating session in the alerting phase" + { + + import all from Sip_Common; + + + Test Purpose { + + // When the SCC AS receives a SIP INVITE request due to PS to CS STN and if there are one or more dialogs in an early + // dialog phase supporting a session with active speech media component such that: + // 1) all dialogs are early dialogs created by the same SIP INVITE request; + // 2) a SIP 180 (Ringing) response to SIP INVITE request was received in at least one of those early dialogs; + // 3) a g.3gpp.drvcc-alerting feature-capability indicator as described in annex C was included in a Feature-Caps + // header field by the SCC AS in the SIP 180 (Ringing) response; and + // 4) the Contact header field in the initial SIP INVITE request sent by the SC UE towards the SCC AS included the + // g.3gpp.drvcc-alerting media feature tag as described in annex C, + // then the SCC AS shall for each early dialog send an SIP UPDATE request towards the remote UE and populate each + // SIP UPDATE request as follows: + // 1) set the Request-URI set to the URI contained in the Contact header field returned at the creation of the dialog + // with the remote UE; + // 2) the Contact header field set to the Contact header field provided by the served UE at the creation of the dialog + // with the remote UE; and + // 3) a new SDP offer, including: + // a) if the remote leg is not a precondition enabled dialog, the media characteristics as received in the SIP + // INVITE request due to PS to CS STN but excluding any precondition mechanism specific SDP attributes, by + // following the rules of 3GPP TS 24.229 [2]; + // b) if the remote leg is a precondition enabled dialog, include a new SDP offer including: + // - the media characteristics as received in the SIP INVITE request due to PS to CS STN (including any + // precondition mechanism specific SDP attributes); and + // - if the SIP INVITE request due to PS to CS STN is not a precondition enabled initial SIP INVITE request, + // indicate preconditions as met, using the segmented status type, as defined in IETF RFC 3312 [88] and + // IETF RFC 4032 [89], as well as the strength-tag value "mandatory" for the local segment and the + // strength-tag value either "optional" or as specified in RFC 3312 [88] and RFC 4032 [89] for the remote + // segment. + + // this TP: only case A + + TP Id TP_ISC_SCCAS_PCT_UPD_01 + + Test objective "Verify that the SCC AS sends a SIP UPDATE after receiving a SIP INVITE request due to PS to CS STN and if there are one or more dialogs in an early dialog phase and the remote leg is not a precondition enabled dialog" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.5.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE // PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // here are one or more dialogs in an early dialog phase supporting a session with active speech media component such that: + // 1) all dialogs are early dialogs created by the same SIP INVITE request; + // 2) a SIP 180 (Ringing) response to SIP INVITE request was received in at least one of those early dialogs; + // 3) a g.3gpp.drvcc-alerting feature-capability indicator as described in annex C was included in a Feature-Caps + // header field by the SCC AS in the SIP 180 (Ringing) response; and + // 4) the Contact header field in the initial SIP INVITE request sent by the SC UE towards the SCC AS included the + // g.3gpp.drvcc-alerting media feature tag as described in annex C, + // and + // the remote leg is not a precondition enabled dialog + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an UPDATE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + // 1) set the Request-URI set to the URI contained in the Contact header field returned at the creation of the dialog + // with the remote UE; + Contact indicating value "set to the Contact header field provided by the served UE at the creation of the dialog",// 2) the Contact header field set to the Contact header field provided by the served UE at the creation of the dialog with the remote UE + ContentType indicating value "application/sdp", + MessageBody containing // 3) a new SDP offer, including: + 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)"; + ; + ; + to the IMS_S_CSCF entity + } + } + + } // end TP_ISC_SCCAS_PCT_UPD_01 + + + + Test Purpose { + + + // For each SIP 200 (OK) response to the SIP UPDATE request (triggered by the SIP INVITE request due to PS to CS + // STN) from a remote UE the SCC AS shall: + // 1) if one of the following is true: + // A) if the remote leg is not a precondition enabled dialog; + // B) if the remote leg is a precondition enabled dialog, the SIP INVITE request due to PS to CS STN is a + // precondition enabled initial SIP INVITE request and both local and remote preconditions are met: + // send a SIP provisional response to the SIP INVITE request due to PS to CS STN following the rules of + // 3GPP TS 24.229 [2] with the response code corresponding to the actual dialog state populated with: + // - an SDP answer based on the SDP answer received from the remote UE; and + // - the last received P-Early-Media header field, including the SIP 2xx response to the SIP UPDATE request, if a PEarly- + // Media has been received from the remote UE. + + // This TP: only case A + + TP Id TP_ISC_SCCAS_PCT_RES_02 + + Test objective "Verify that the SCC AS sends SIP provisional response to the SIP INVITE request due to PS to CS STN" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.5.2" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // a SIP INVITE request due to PS to CS STN tooks place + // and + // SCC AS has send a SIP UPDATE request according to TP TP_ISC_SCCAS_PCT_UPD_01 + // and + // the remote leg is not a precondition enabled dialog + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an r_200_Ok containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_1xx_Any containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PEarlyMedia indicating value "the last received P-Early-Media header field", + ContentType indicating value "application/sdp", + MessageBody containing // 3) a new SDP offer, including: + SDP containing + Media indicating value "SDP answer based on the SDP answer received from the remote UE"; + ; + ; + to the IMS_S_CSCF entity + } + } + } // end TP TP_ISC_SCCAS_PCT_RES_02 + + + } // end Group "9.3.5.2 SCC AS procedures for PS to CS dual radio access transfer of a originating session in the alerting phase" + + Group "9.3.5.3 SCC AS procedures for PS to CS dual radio, access transfer of a originating session in the pre-alerting phase" + { + + import all from Sip_Common; + + Test Purpose { + + // When the SCC AS receives a SIP INVITE request due to PS to CS STN and if there are zero, one or more dialogs in an + // early dialog phase supporting a session with active speech media component such that: + // 1) all dialogs are early dialogs created by the same SIP INVITE request; + // 2) a SIP 180 (Ringing) response to the SIP INVITE request has not been received yet in any of the existing dialogs; + // 3) the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting feature-capability indicator as described in annex C + // in a Feature-Caps header field of SIP 18x responses; and + // 4) 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 described in annex C, + // then the SCC AS shall for each early dialog send a SIP UPDATE request towards the remote UE. + // Each SIP UPDATE request shall be populated as follows: + // 1) the Request-URI set to the URI contained in the Contact header field returned at the creation of the dialog with + // the remote UE; + // 2) the Contact header field set to the Contact header field provided by the served UE at the creation of the dialog + // with the remote UE; and + // 3) an new SDP offer, including + // a) if the remote leg is not a precondition enabled dialog, the media characteristics as received in the SIP + // INVITE request due to PS to CS STN but excluding any precondition mechanism specific SDP attributes, by + // following the rules of 3GPP TS 24.229 [2]; + // b) if the remote leg is a precondition enabled dialog, include a new SDP offer including: + // - the media characteristics as received in the SIP INVITE request due to PS to CS STN (including any + // precondition mechanism specific SDP attributes); and + // - if the SIP INVITE request due to PS to CS STN is not a precondition enabled initial SIP INVITE request, + // indicate preconditions as met, using the segmented status type, as defined in IETF RFC 3312 [88] and + // IETF RFC 4032 [89], as well as the strength-tag value "mandatory" for the local segment and the + // strength-tag value either "optional" or as specified in RFC 3312 [88] and RFC 4032 [89] for the remote + // segment. + + TP Id TP_ISC_SCCAS_PCT_INV_05 + + Test objective "Verify that the SCC AS send a SIP UPDATE request towards the remote UE after receiving a SIP INVITE request due to PS to CS STN in early dialog phase supporting a session with active speech media component such" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.5.3" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // 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 + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an UPDATE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PEarlyMedia indicating value "the last received P-Early-Media header field", + ContentType indicating value "application/sdp", + MessageBody containing // 3) a new SDP offer, including: + SDP containing + Media indicating value "the media characteristics as received in the SIP INVITE request due to PS to CS STN but excluding any precondition mechanism specific SDP attributes"; + ; + ; + to the IMS_S_CSCF entity + } + } + + } // end TP_ISC_SCCAS_PCT_INV_05 + + + } // end Group "9.3.5.3 SCC AS procedures for PS to CS dual radio, access transfer of a originating session in the prealerting phase" + + Group "9.3.5.4 SCC AS procedures for PS to CS dual radio access transfer of an additional session in an early dialog phase" + { + + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_PCT_REF_01 + + Test objective "Verify that the SCC AS populate a SIP REFER request to transfer an additional session in PS to CS dual radio access" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.5.4" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // initial condition SIP INVITE request to PS to CS STN + // "In order to transfer an additional session on the originating side that can be in pre-alerting phase or in an alerting phase, + // the SCC AS shall send a SIP REFER request in the + // dialog created by the SIP INVITE request due to PS to CS STN" + } + + // 1. the Refer-Sub header field with value "false" as specified in IETF RFC 4488 [20]; + // 2. the Require header field with value "norefersub" as specified in IETF RFC 4488 [20]; + // 3. the Refer-To header field containing the additional transferred session SCC AS URI for PS to CS dual radio, + // where the URI also includes the following header fields containing the information related to the additional + // transferred session: + // A. the Target-Dialog header field populated as specified in IETF RFC 4538 [11], containing the dialog identifier + // of an dialog in the early phase supporting session of the SC UE; + // B. the Require header field populated with the option tag value "tdialog"; + // C. the To header field populated as specified in IETF RFC 3261 [19], containing the value of the P-Asserted- + // Identity provided by the remote UE during the session establishment; + // D. the From header field populated as specified in IETF RFC 3261 [19], containing the value of the P-Asserted- + // Identity provided by the SC UE during the session establishment; + // E. the Content-Type header field with "application/sdp"; + // F. the URI header field with the hname "body" populated with SDP describing the media streams as negotiated + // in the session with the remote UE; and + // G. optionally the P-Asserted-Identity URI header field containing value of the P-Asserted-Identity header field + // of the received SIP INVITE request; and + // 4. application/vnd.3gpp.state-and-event-info+xml MIME body populated as follows: + // A) if a SIP 180 (Ringing) response to the SIP INVITE request has already been received in any of the early + // dialogs associated with the originating early session not accepted yet, with the state-info XML element + // containing "early" and the direction XML element containing "initiator"; and + // B) if a SIP 180 (Ringing) response to the SIP INVITE request has not been received yet in any of the early + // dialogs associated with the originating early session not accepted yet, with the state-info XML element + // containing "pre-alerting" and the direction XML element containing "initiator". + + Expected behaviour + ensure that { + when { + the IUT entity receives an ACK + + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an REFER containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + ReferSub indicating value false, // 1. the Refer-Sub header field with value "false" + Require indicating value "norefersub", // 2. the Require header field with value "norefersub" + ReferTo containing "a SIP URI with the Target-Dialog_URI_header_field" // 3. the Refer-To header field containing the additional transferred session SCC AS URI for PS to CS dual radio, where the URI also includes the following header fields containing the information related to the additional transferred session: + TargetDialog indicating value "dialog identifier of an dialog in the early phase supporting session of the SC UE", // A. the Target-Dialog header field populated, containing the dialog identifier of an dialog in the early phase supporting session of the SC UE; + Require indicating value "tdialog", // B. the Require header field populated with the option tag value "tdialog" + To indicating value "", // C. the To header field populated, containing the value of the P-Asserted-Identity provided by the remote UE during the session establishment; + From indicating value "", // D. the From header field populated, containing the value of the P-Asserted-Identity provided by the SC UE during the session establishment; + ContentType indicating value "application/sdp", // E. the Content-Type header field with "application/sdp"; + MessageBody containing // F. the URI header field with the hname "body" populated with SDP describing the media streams as negotiated in the session with the remote UE + SDP containing + Media indicating value ""; + ; + ;, + PAssertedIdentity indicating value ""; // G. optionally the P-Asserted-Identity URI header field containing value of the P-Asserted-Identity header field of the received SIP INVITE request + + to the IMS_S_CSCF entity + } + } + + } // end TP_ISC_SCCAS_PCT_REF_01 + + + } // end Group "9.3.5.4 SCC AS procedures for PS to CS dual radio access transfer of an additional session in an early dialog phase" + + Group "9.3.5.5 SCC AS procedures for PS to CS dual radio access transfer of a terminating session in the alerting phase" + { + import all from Sip_Common; + + + Test Purpose { + + // When the SCC AS receives a SIP 488 (Not Acceptable Here) response to the SIP INVITE request creating the session + // in the terminating alerting phase without an SDP MIME body and if the SCC AS supports PS to CS dual radio access + // transfer for calls in alerting phase then the SCC AS shall: + // 1) if a SIP 180 (Ringing) response to the SIP INVITE request has been received from the SC UE; + // 2) if the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting feature-capability indicator as described in + // annex C in the SIP INVITE request; and + // 3) if the Contact header field in the SIP 180 (Ringing) response request sent by the SC UE towards the SCC AS + // included a g.3gpp.drvcc-alerting media feature tag as described in annex C, + // terminate the call over CS as follows: + // 1) perform the actions according to the subclause 10.4.7 in 3GPP TS 24.292 [4] with the following clarifications: + // a) the URI in the Request-URI shall be set to C-MSISDN; and + // b) the P-Asserted-Identity header field set to: + // - if the SIP 180 (Ringing) response contained the g.3gpp.dynamic-stn media feature tag as described in + // annex C in the Contact header field, the dynamic STN; and + // - if the SIP 180 (Ringing) response does not contain the g.3gpp.dynamic-stn media feature tag as described + // in annex C in the Contact header field, the static STN. + + TP Id TP_ISC_SCCAS_PCT_REF_02 + + Test objective "Verify that the SCC AS terminates the call over CS after receiving a SIP 488" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.5.5 and 10.4.7 in 3GPP TS 24.292 [4]" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the UE entity hasReceivedInitialRequestForDialog + // SIP INVITE was sent with: + // creating the session in the terminating alerting phase without an SDP MIME body + // SCC AS supports PS to CS dual radio access + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an r_488_NotAcceptableHere containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an REFER containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + ReferSub indicating value false, // 1. the Refer-Sub header field with value "false" + Require indicating value "norefersub", // 2. the Require header field with value "norefersub" + ReferTo containing "a SIP URI with the Target-Dialog_URI_header_field" // 3. the Refer-To header field containing the additional transferred session SCC AS URI for PS to CS dual radio, where the URI also includes the following header fields containing the information related to the additional transferred session: + TargetDialog indicating value "dialog identifier of an dialog in the early phase supporting session of the SC UE", // A. the Target-Dialog header field populated, containing the dialog identifier of an dialog in the early phase supporting session of the SC UE; + Require indicating value "tdialog", // B. the Require header field populated with the option tag value "tdialog" + To indicating value "", // C. the To header field populated, containing the value of the P-Asserted-Identity provided by the remote UE during the session establishment; + From indicating value "", // D. the From header field populated, containing the value of the P-Asserted-Identity provided by the SC UE during the session establishment; + ContentType indicating value "application/sdp", // E. the Content-Type header field with "application/sdp"; + MessageBody containing // F. the URI header field with the hname "body" populated with SDP describing the media streams as negotiated in the session with the remote UE + SDP containing + Media indicating value ""; + ; + ;, + PAssertedIdentity indicating value ""; // G. optionally the P-Asserted-Identity URI header field containing value of the P-Asserted-Identity header field of the received SIP INVITE request + + to the IMS_S_CSCF entity + } + } + + } // end TP_ISC_SCCAS_PCT_REF_02 + + + Test Purpose { + + // When the SCC AS receives a SIP 1xx response with an SDP answer the SCC AS shall: + // a) send a SIP PRACK request towards the CS domain; and + // b) send an SIP UPDATE request to the remote UE populated as follows: + // - the Request-URI set to the URI contained in the Contact header field returned at the creation of the dialog + // with the remote UE; + // - the Contact header field set to the Contact header field provided by the served UE at the creation of the + // dialog with the remote UE; and + // - anew SDP offer, including the media characteristics as received in the SIP 1xx response with the SDP + // answer, by following the rules of 3GPP TS 24.229 [2]. + + TP Id TP_ISC_SCCAS_PCT_RES_01 + + Test objective "Verify that the SCC AS sends a SIP PRACK and SIP UPDATE after receiving a SIP 1xx" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.5.5" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the UE entity hasReceivedInitialRequestForDialog + // SIP INVITE was sent with: + // creating the session in the terminating alerting phase without an SDP MIME body + // SCC AS supports PS to CS dual radio access + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an r_1xx_Any containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an PRACK containing // send a SIP PRACK request towards the CS domain + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + and + the IUT entity sends an UPDATE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Contact indicating value "set to the Contact header field provided by the served UE at the creation of the dialog with the remote UE", // the Contact header field set to the Contact header field provided by the served UE at the creation of the dialog with the remote UE; + MessageBody containing // a new SDP offer, including the media characteristics as received in the SIP 1xx response with the SDP answer, by following the rules of 3GPP TS 24.229 [2]. + SDP containing + Media indicating value "the same media characteristics as received in the SIP 1xx response with the SDP answer"; + ; + ; + to the IMS_S_CSCF entity + } + } + + + } // end TP_ISC_SCCAS_PCT_RES_01 + + + } // end Group "9.3.5.5 SCC AS procedures for PS to CS dual radio access transfer of a terminating session in the alerting phase" + + } // end Group "9.3.5 9.3.5 SCC AS procedures for PS to CS dual radio access transfer of calls in an early dialog phase" + + Group "9.3.6 Removal of non-transferred audio media components and release of source access legs" + { + import all from Sip_Common; + + + Test Purpose { + + + TP Id TP_ISC_SCCAS_MED_BYE_01 + + // When the transfer of a session is successfully completed, then the SCC AS shall release the source legs as follows: + // 1) the source access leg is an ongoing session containing only an active or inactive media component or a session in + // an early dialog phase on the terminating side, send a SIP BYE request on the source access leg in accordance + // with 3GPP TS 24.229 [2]; + + Test objective "Verify that the SCC AS sends a SIP BYE after transfer of a session is successfully completed and the source access leg is an ongoing session containing only an active or inactive media component" + + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.6." + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // source access leg is an ongoing session containing only an active or inactive media component + // transfer of a session is successfully completed + + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an ACK + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an BYE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; + + to the IMS_S_CSCF entity + } + } + + + } // end TP_ISC_SCCAS_MED_BYE_01 + + + + Test Purpose { + + + TP Id TP_ISC_SCCAS_MED_RES_01 + + // When the transfer of a session is successfully completed, then the SCC AS shall release the source legs as follows: + // 2) the session is dialog in an early dialog phase on the originating side send a SIP 480 (Temporary Unavailable) + // response on the source access leg in accordance with 3GPP TS 24.229 [2]; + + Test objective "Verify that the SCC AS sends a SIP 480 after transfer of a session is successfully completed and the session is dialog in an early dialog phase on the originating side" + + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.6." + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // session is dialog in an early dialog phase on the originating side + // transfer of a session is successfully completed + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an ACK + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an r_480_TemporaryUnavailable containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + to the IMS_S_CSCF entity + } + } + + + } // end TP_ISC_SCCAS_MED_RES_01 + + + + Test Purpose { + + + TP Id TP_ISC_SCCAS_MED_RIN_01 + + // When the transfer of a session is successfully completed, then the SCC AS shall release the source legs as follows: + // 3) the source access leg contains media components other than speech media component, the SCC AS should send + // a SIP re-INVITE request to update the source access leg in accordance with 3GPP TS 24.229 [2] + + Test objective "Verify that SCC AS sends a reINVITE after transfer of a session is successfully completed and the source access leg contains media components other than speech media component" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.6." + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // transfer of a session is successfully completed + // and + // the source access leg contains media components other than speech media component + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an ACK + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an INVITE containing // reINVITE + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + ContentType indicating value "application/sdp", + ContentLength, + MessageBody containing + SDP containing + Media indicating value "the source access leg contains media components other than speech media component";;; + to the IMS_S_CSCF entity + } + } + + + } // end TP_ISC_SCCAS_MED_RIN_01 + + } // end Group "9.3.6 Removal of non-transferred audio media components and release of source access legs" + + + Group "9.3.7 SCC AS procedures for CS to PS dual radio access transfer for calls in an early phase" + { + + Group "9.3.7.2 SCC AS procedures for CS to PS dual radio access transfer for originating calls in pre-alerting phase or in alerting phase on the originating side" + { + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ISC_SCCAS_CPT_INV_05 + + // When the SCC AS receives a SIP INVITE request due to static STI and if the SCC AS supports CS to PS dual radio + // access transfer for calls in alerting phase or CS to PS dual radio access transfer for originating calls in pre-alerting phase + // and: + // 2) if there are zero, one or more dialog in an early dialog phase such that: + // a) all dialogs are early dialogs created by the same SIP INVITE request; + // b) a SIP 180 (Ringing) response to the SIP INVITE request has not been received yet in any of the existing + // dialogs; + // c) a g.3gpp.drvcc-orig-pre-alerting media feature tag as described in annex C in the Contact header field was + // included in the SIP INVITE due to static STI; and + // d) the SCC AS supports CS to PS dual radio access transfer for originating calls in pre-alerting phase, + // then the SCC AS shall + // A) for each existing early dialog towards remote UEs send an SIP UPDATE request and populate as follows: + // a) the Contact header field set to the Contact header field provided on the source leg at the creation of the dialog + // with the remote UE; and + // b) a new SDP offer, including the media characteristics as received in the SIP INVITE request due to static STI, + // by following the rules of 3GPP TS 24.229 [2] + + Test objective "Verify that the SCC AS performs the procedures correctly for CS to PS dual radio access transfer for originating calls in pre-alerting phase or in alerting phase on the originating side" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.7.2." + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // the SCC AS supports CS to PS dual radio access transfer for originating calls in pre-alerting phase + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Contact containing + g3gppDrvccOrigPreAlertingFeature Tag;, // a g.3gpp.drvcc-orig-pre-alerting media feature tag as described in annex C in the Contact header field was + // included in the SIP INVITE due to static STI + MessageBody containing + SDP containing + Media indicating value PX_PSMedia;;; + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an UPDATE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Contact indicating value "set to the Contact header field provided on the source leg at the creation of the dialog",// a) the Contact header field set to the Contact header field provided on the source leg at the creation of the dialog with the remote UE; + ContentType indicating value "application/sdp", + MessageBody containing // 3) a new SDP offer, including: + SDP containing + Media indicating value PX_PSMedia; + ; + ; + to the IMS_S_CSCF entity + } + } + + + } // end TP TP_ISC_SCCAS_CPT_INV_05 + } // end Group 9.3.7.2 SCC AS procedures for CS to PS dual radio access transfer for originating calls in pre-alerting phase or in alerting phase on the originating side" + + + Group "9.3.7.3 SCC AS procedures for CS to PS dual radio access transfer for a call in the alerting phase on the terminating side" + { + import all from Sip_Common; + + Test Purpose { + + // When the SCC AS receives a SIP INVITE request due to static STI and if SCC AS supports CS to PS dual radio access + // transfer for calls in alerting phase and: + // 1) if there is one dialog in an early dialog phase such that: + // a) a SIP 180 (Ringing) response to the SIP INVITE request has been received from the SC UE; and + // b) a g.3gpp.drvcc-alerting media feature tag as described in annex C in the Contact header field was included in + // the SIP INVITE request due to static STI, + // then the SCC AS shall send a SIP UPDATE request towards the remote UE populated as follows: + // 1) include the Contact header field set to the Contact header field provided on the source leg at the creation of the + // dialog with the remote UE; and + // 2) include a new SDP offer, including the media characteristics as received in the SIP INVITE request due to static + // STI, by following the rules of 3GPP TS 24.229 [2]. + + TP Id TP_ISC_SCCAS_CPT_INV_06 + + Test objective "Verify that SCC AS correctly recognizes and initiated for CS to PS dual radio access transfer for a call in the alerting phase on the terminating side " + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.7.3." + + Config Id CFG_SCCAS_01 + + PICS Selection NONE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the IUT entity hasAchievedInitialINVITE + // INVITE contains: g3gppDrvccAlerting + // SCC AS supports CS to PS dual radio access transfer for calls in alerting phase + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an r_180_Ringing + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an UPDATE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + Contact indicating value "set to the Contact header field provided on the source leg at the creation of the dialog",// a) the Contact header field set to the Contact header field provided on the source leg at the creation of the dialog with the remote UE; + ContentType indicating value "application/sdp", + MessageBody containing // 3) a new SDP offer, including: + SDP containing + Media indicating value PX_PSMedia; + ; + ; + to the IMS_S_CSCF entity + } + + } + + + } // end TP TP_ISC_SCCAS_CPT_INV_06 + + } // end Group"9.3.7.3 SCC AS procedures for CS to PS dual radio access transfer for a call in the alerting phase on the terminating side + + + Group "9.3.7.4 SCC AS procedures for PS to CS dual radio access transfer of an additional session in an early dialog phase" + { + + import all from Sip_Common; + + Test Purpose { + // In order to transfer of an additional session that can be in originating pre-alerting phase or in an alerting phase, the + // SCC AS supporting CS to PS dual radio access transfer for calls in an early phase, shall send a SIP REFER request + // according to 3GPP TS 24.229 [2], IETF RFC 4488 [20] and IETF RFC 3515 [13] as updated by IETF RFC 6665 [81] + // and IETF RFC 7647 [90] in the dialog created by the SIP INVITE request due to static STI populated as follows: + // 1) include a Refer-Sub header field with value "false" as specified in IETF RFC 4488 [20]; + // 2) include a Require header field with value "norefersub" as specified in IETF RFC 4488 [20]; + // 3) include a Refer-To header field containing the additional transferred session SCC AS URI for PS to CS dual + // radio, where the URI also includes the following URI header fields containing the information related to the + // additional transferred session: + // a) if an early dialog supporting the additional transferred session exists, the Target-Dialog header field + // populated as specified in IETF RFC 4538 [11], containing the dialog identifier of the dialog in the early + // phase; + // b) if the SCC AS supports the PS to CS dual radio access transfer for originating calls in pre-alerting phase, if + // no early dialog supporting the additional transferred session exists, there is a SIP INVITE request from the + // served user for which a final SIP response has not been received yet and if an early dialog supporting the + // additional transferred session existed and was terminated, the Target-Dialog header field populated as + // specified in IETF RFC 4538 [11], containing the dialog identifier on the source access leg of the early dialog + // supporting the additional transferred session which existed and was terminated; + // c) the Require header field populated with the option tag value "tdialog"; + // d) if an early dialog supporting the additional transferred session exists, the To header field populated as + // specified in IETF RFC 3261 [19], containing the value of the P-Asserted-Identity provided by the remote UE + // during the session establishment; + // e) the From header field populated as specified in IETF RFC 3261 [19], containing the value of the P-Asserted- + // Identity provided by the SC UE during the session establishment; + // f) the Content-Type header field with "application/sdp"; + // g) if an early dialog supporting the additional transferred session exists, the URI header field with hname + // "body" populated with SDP describing the media streams as negotiated in the session with the remote UE; + // and + // h) if the SCC AS supports the PS to CS dual radio access transfer for originating calls in pre-alerting phase, no + // early dialog supporting the additional transferred session exists, there is a SIP INVITE request from the + // served user for which a final SIP response has not been received yet, the URI header field with the hname + // "body" populated with the SDP offer received in the SIP INVITE request from the served user; and + // 4) application/vnd.3gpp.state-and-event-info+xml MIME with: + // a) if a SIP 180 (Ringing) response to the SIP INVITE request has already been received from the remote UE in + // any of the early dialogs associated with the originating early session not accepted yet, the state-info XML + // element containing "early" and the direction XML element containing "initiator"; + // b) if a SIP 180 (Ringing) response to the SIP INVITE request has not been received yet from the remote UE in + // any of the early dialogs associated with the originating early session not accepted yet and the additional + // transferred session was originated by the SC UE, the state-info XML element containing "pre-alerting" and + // the direction XML element containing "initiator"; and + // c) if a SIP 180 (Ringing) response to the INVITE request has already been received on the source access leg, + // the state-info XML element containing "early" and the direction XML element containing "receiver" + + TP Id TP_ISC_SCCAS_PCT_INV_04 + + Test objective "Verify that SCC AS correctly recognizes and initiated procedures for PS to CS dual radio access transfer of an additional session in an early dialog phase " + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.7.4." + + Config Id CFG_SCCAS_01 + + PICS Selection NONE // PICS_SCCAS_CS2PS_DUAL_RADIO_ACCES_TRANSFER_FOR_CALLS_IN_EARLY_PHASE + + Initial conditions with { + the UE entity isRegisteredTo the IMS and + the IUT entity hasAchievedInitialINVITE + // SCC AS the SCC AS supporting CS to PS dual radio access transfer for calls in an early phase + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an r_180_Ringing + from the IMS_S_CSCF entity + } + then { + the IUT entity sends an REFER containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + ReferSub indicating value false, // 1) include a Refer-Sub header field with value "false" as specified in IETF RFC 4488 [20]; + Supported indicating value "norefersub", // 2) include a Require header field with value "norefersub" as specified in IETF RFC 4488 [20]; + ReferTo containing // 3) include a Refer-To header field + TargetDialog indicating value "Target-Dialog header field containing the dialog identifier of the dialog in the early phase, if exist", // a) if an early dialog supporting the additional transferred session exists, the Target-Dialog header field + Require indicating value "tdialog", // c) the Require header field populated with the option tag value "tdialog"; + From indicating value "value of the P-Asserted-Identity provided by the SC UE during the session establishment", //the From header field populated as specified in IETF RFC 3261 [19], containing the value of the P-Asserted-Identity provided by the SC UE during the session establishment + ContentType indicating value "application/sdp", // E. the Content-Type header field with "application/sdp"; + MessageBody containing // F. the URI header field with the hname "body" populated with SDP describing the media streams as negotiated in the session with the remote UE + SDP containing + Media indicating value "";;; + , + Accept containing // if a SIP 180 (Ringing) response to the INVITE request has already been received on the source access leg, the state-info XML element containing "early" and the direction XML element containing "receiver" + MIME indicating value "application/vnd.3gpp.state-and-event-info.xml";; //subclause D.2.3 + + to the IMS_S_CSCF entity + } + } + + } // end TP TP_ISC_SCCAS_PCT_INV_04 + + + } // end Group 9.3.7.4 SCC AS procedures for PS to CS dual radio access transfer of an additional session in an early dialog phase + + + } // end Group 9.3.7 SCC AS procedures for CS to PS dual radio access transfer for calls in an early phase + +}// End of Package TP_SCCAS_Chapter_9_3 + diff --git a/titan-test-system-framework b/titan-test-system-framework new file mode 160000 index 0000000000000000000000000000000000000000..a24f37489fd2fb50bfcd3a35b3e8e094a9c2bf6a --- /dev/null +++ b/titan-test-system-framework @@ -0,0 +1 @@ +Subproject commit a24f37489fd2fb50bfcd3a35b3e8e094a9c2bf6a diff --git a/ttcn/AtsSccas/AtsSccas_PICS.ttcn b/ttcn/AtsSccas/AtsSccas_PICS.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..7d68ae23665fbd92d53525b1f30fe2493f92ab90 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_PICS.ttcn @@ -0,0 +1,148 @@ +/* + *@author TTF T016 + *@version $Id$ + *@desc This module provides the PICS used for the SCCAS_IMS tests. +*/ + +module AtsSccas_PICS +{ +modulepar { + +/* **************************************************************************************************** +PICS used for test case selection +*************************************************************************************************** */ + + /** @desc Does IUT acts as the SCC-AS? + @see ETSI TS 103 833-1 + */ + boolean PICS_SCCAS_IUT := false; + + /** @desc Does IUT acts as the SCC-AS? + @see ETSI TS 103 833-1 + */ + boolean PICS_MSC_IUT := false; +} + + group PICS_A2 { + //Core functionalities + //A2/1.1 procedures for PS to CS dual radio access transfer, for a session with an active speech media component? 4.1, 1) a) o.1 + //A2/1.2 procedures for PS-PS access transfer, for a session with an active speech media component? 4.1, 1) b) o.1 + //A2/1.3 procedures for PS to CS SRVCC for a session with an active speech media component? 4.1, 1) c) o.1 + //A2/1.4 procedures for CS to PS dual radio access transfer, for a session with an active speech media component? 4.1, 1) d) o.1 + + //Optional features + //A2/2 access transfer for a session with an inactive speech media component? 4.1, 2) o + //A2/3 access transfer for a session with conference control with active speech media component or inactive speech media component? 4.1, 3) o + //A2/4 access transfer in the alerting phase with an active speech media component? 4.1, 4) o + //A2/5 PS to CS SRVCC access transfer for originating calls in pre-alerting phase with an active speech media component? 4.1, 5) c.1 + //A2/6 access transfer for a session with active speech media component and active video media component? 4.1, 6) o + //A2/6.1 access transfer in the alerting phase with an active speech media component and active video media component? 4.1, 6) a) c.2 + //A2/6.2 PS to CS SRVCC access transfer for originating calls in pre-alerting phase with an active speech media component and an active video media component? 4.1, 6) b) c.3 + //A2/7.1 CS to PS SRVCC access transfer for an active session with an active speech media component? 4.1, 7) c.4 + //A2/7.2 access transfer for a session with an inactive speech media component? 4.1, 7) a) c.5 + //A2/7.3 access transfer for a session with conference control with active speech media component or inactive speech media component? 4.1, 7) b) c.6 + //A2/7.4 access transfer in the alerting phase with an active speech media component? 4.1, 7) c) c.7 + //A2/8 dual radio access transfer for originating calls in pre-alerting phase with an active speech media component? 4.1, 8) c.8 + //A2/9 procedures related to the MSC server assisted mid-call feature? 4.1 o + } //end group PICS_A2 + + group PICS_A3 { + //A3/1 procedures for registration in the IM CN subsystem for service continuity? 6.3 m + + /** @desc Does IUT supports provision of PS to CS SRVCC related information to the ATCF? 6.3.2, 6.3.3 + * @see ETSI TS 103 833-1 A.3/1.1 + */ + modulepar boolean PICS_SCCAS_PS2CS_SRVCC_ATCF := false; + + /** @desc Does IUT supports provision of PS to CS SRVCC related information to the MSC server? 6.3.4, 6.3.5 + * @see ETSI TS 103 833-1 A.3/1.2 + */ + modulepar boolean PICS_SCCAS_PS2CS_SRVCC_MSC := false; + + //A3/2 common procedures for setting up SIP messages sent by SCC AS? 6A.4 m + //A3/2.1 handling of OMR specific attributes? 6A.4.4 o + + + /** @desc Does IUT supports rejection of malicious SIP REFER requests from remote UE? 6A.4.6 + * @see ETSI TS 103 833-1 A.3/2.2 + */ + modulepar boolean PICS_SCCAS_REJECTION_OF_MALICIOUS_REFER := false; + + //A3/2.3 handling of SDP media description conflicts? 5.3, 6A.5 m + //A3/2.4 SCC AS server procedure for indicating traffic leg? 5.3, 6A.6.1 o + //A3/3 procedures for call origination for service continuity? 7.3 m + //A3/3.1 removal of the g.3gpp.mid-call media feature tag in SIP INVITE requests towards the remote UE? 7.3.2 c.11 + //A3/3.2 removal of the g.3gpp.srvcc-alerting media feature tag in SIP INVITE requests towards the remote UE? 7.3.2 c.9 + //A3/4 procedures for call termination for service continuity? 8.3 m + //A3/4.1 removal of the g.3gpp.mid-call media feature tag from the SIP 2xx response towards the remote UE? 8.3.2 c.11 + //A3/5 procedures for PS-CS access transfer? 9.3.2, 9.3.3, 9.3.6 c.12 + //A3/5.1 procedures for PS to CS access transfer with MSC server assisted mid-call feature? 9.3.2A, 9.3.4 c.13 + + + /** @desc Does IUT supports procedures for PS to CS dual radio access transfer of calls in an early dialog or alerting phase? 9.3.5.1, 9.3.5.2, 9.3.5.4, 9.3.5.5 c.14 + * @see ETSI TS 103 833-1 A.3/5.2 + */ + modulepar boolean PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG := false; + + //A3/5.3 procedures for PS to CS dual radio, access transfer of a originating session in the pre-alerting phase? 9.3.5.3 c.15 + + /** @desc Does IUT supports procedures for CS to PS dual radio access transfer for calls in an early phase? 9.3.7 c.16 + * @see ETSI TS 103 833-1 A.3/5.4 + * //TODO check if added in TP_ISC_SCCAS_PCT_INV_04 + */ + modulepar boolean PICS_SCCAS_CS2PS_DUAL_RADIO_ACCES_TRANSFER_FOR_CALLS_IN_EARLY_PHASE := false; + + // Check optional session release! & “support” + //A3/6 procedures for PS-PS access transfer? 10.3.1, 10.3.2, 10.3.4, 10.3.5 c.17 + + /** @desc Does IUT supports procedures for PS-PS access transfer? 10.3.1, 10.3.2, 10.3.4, 10.3.5 c.17 + * @see ETSI TS 103 833-1 A.3/6 + */ + modulepar boolean PICS_SCCAS_PS2PS_ACCES_TRANSFER := false; + + /** @desc Does IUT supports Procedure for P-CSCF releasing early dialog during PS to PS access transfer? 10.3.6 c.18 + * @see ETSI TS 103 833-1 A.3/6.1 + */ + modulepar boolean PICS_SCCAS_RELEASING_EARLY_DIALOG_DURING_PS2PS_ACCES_TRANSFER := false; + + /** @desc Does IUT supports procedures for PS-PS access transfer in conjunction with PS-CS access transfer? 11.3 c.19 + * @see ETSI TS 103 833-1 A.3/7 + */ + modulepar boolean PICS_SCCAS_PS2PS_ACCES_TRANSFER_IN_CONJUNCTION_PS2CS := false; + + /** @desc Does IUT supports procedures for PS-CS access transfer, Single Radio (PS to CS SRVCC)? 12.3.0, 12.3.0A, 12.3.0B, 12.3.1, 12.3.3.1, 12.3.3.2, 12.3.3.4, 12.3.5, 12.3.6, 12.3.7, 12.3.8, 12.3.9, 12.3.11 c.20 + * @see ETSI TS 103 833-1 A.3/8 + */ + modulepar boolean PICS_SCCAS_PS2CS_SRVCC := false; + + // + //A3/8.1 inclusion of the g.3gpp.srvcc-alerting feature-capability indicator in the Feature-Caps header field in SIP 200 (OK) responses to SIP INVITE requests due to STN-SR on the target access leg? 12.3.1, 3rd numbered list item 2) c.21 + //A3/8.2 procedures for PS to CS SRVCC access transfer with MSC server assisted mid-call feature? 12.3.2 c.22 + //A3/8.3 procedures for PS to CS SRVCC access transfer when call is in alerting phase or pre-alerting phase? 12.3.3.1A, 12.3.3.3, 12.3.3.5, 12.3.4 c.21 + //A3/8.4 procedures for CS to PS SRVCC access transfer? 12.3.10 c.23 + //A3/9 procedures for media adding/deleting for access transfer? 13.3 m + //A3/10 procedures for access transfer and supplementary services interaction? 20.1 m + //A3/10.1.1 delivery of Explicit Communication Transfer (ECT) requests on the CS access leg? 20.1.11 o + //A3/10.1.2 delivery of ECT requests on the PS access leg? 20.1.11 o + //A3/10.2.1 delivery of Advice of Charge (AOC) charging information on the CS access leg? 20.1.12 o + //A3/10.2.2 delivery of AOC charging information on the PS access leg? 20.1.12 o + //A3/11 procedures for detection of remote leg information? 5.3, 22.3 c.9 + } // end group PICS_A3 + + group PICS_A4 { + //A4/1 ICS User Agent (IUA) o.1 + //A4/2 Terminating Access Domain Selection (T-ADS) o.1 + //A4/3 AS acting as routeing B2BUA performing 3rd party call control o + } //end group PICS_A4 + + group PICS_A5 { + //A5/1 Procedures for registration in the IM CN subsystem? 6.4 + //A5/2 Procedures for call origination? 7.4 + //A5/3 Procedures for call modifcation initiated from the ICS UE? 8.4 + //A5/4 Procedures call modifcation initiated towards an ICS UE? 9.4 + //A5/5 Procedures for call termination? 10.4 + //A5/6 Procedures for session release? 11.4 + //A5/7 Procedures for supplementary service invocation for ICS? 12 + } //end group PICS_A5 + +} // end module AtsSccas_PICS diff --git a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..8b8dbe420108475c197a35c68790cfee0fda6f1e --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn @@ -0,0 +1,132 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides the PIXIT used for the SIP-IMS tests. + */ + +module AtsSccas_PIXITS { + + //LibSip + import from LibSip_SIPTypesAndValues all; + + // SUT specific implementation variants + + modulepar { + +// /** @desc boolean for SUT working mode due to +// */ +// boolean PX_SCCAS__ := true; + + /** @desc charstring for ATCF management URI in Contact header field + */ + charstring PX_ATCF_MGMT_URI := ""; + + /** @desc charstring for ATCF URI in Contact header field + */ + charstring PX_ATCF_URI := ""; + + /** @desc charstring for ICSI URI in Contact header field + */ + charstring PX_ICSI_URI := ""; + + /** @desc charstring for SCCAS URI in PAssertedID header field + */ + SipUrl PX_SCCAS_URI := {scheme := "c_sipScheme", components := {sip := {userInfo := omit, hostPort := {host := "",portField := c_defaultSipPort}}}}; + + } + + group SUT { + + //used for AS, TAS, SCC-AS + group SUT_AS { + /** @desc charstring for SUT - AS IP address to exchange SIP messages - connection point for SCSCF + */ + modulepar charstring PX_IMS_SUT_AS_IPADDR := "172.31.10.7"; + + /** @desc integer for SUT - AS port number to exchange SIP messages - connection point for SCSCF + */ + modulepar integer PX_IMS_SUT_AS_PORT := 5060; + + /** @desc charstring for SUT/AS domain + */ + modulepar charstring PX_IMS_SUT_AS_HOME_DOMAIN := "as.domain.net"; + + /** @desc integer for SUT - S-CSCF port number to exchange SIP messages - connection point for SCSCF + */ + modulepar integer PX_IMS_SUT_SCSCF_PORT := 5060; + + /** @desc charstring for SUT/S-CSCF domain + */ + modulepar charstring PX_IMS_SUT_SCSCF_IPADDR := "scscf.domain.net"; + + } // End of group SUT_AS + + } // End of group SUT + + group TS { + + group TS_UE1 { + + /** @desc charstring for IP address used by the UE1 to exchange SIP messages + */ + modulepar charstring PX_IMS_TS_UE1_IPADDR := "172.172.1.1"; + + /** @desc integer for port number used by the UE1 to exchange SIP messages + */ + modulepar integer PX_IMS_TS_UE1_PORT := 5060; + + /** @desc charstring for home(TS) REGISTRAR domain for UE1 + */ + modulepar charstring PX_IMS_TS_UE1_REGISTRAR := "registrar.domain.net"; + + /** @desc charstring for IP address used by the TS to exchange media streams for UE1 + */ + modulepar charstring PX_IMS_TS_UE1_BEARER_IPADDR := "192.168.1.1"; + + /** @desc charstring for identity of the tester UE1 local domain + */ + modulepar charstring PX_IMS_TS_UE1_HOME_DOMAIN := "domain.net"; + + /** @desc charstring for identity of the tester UE1 local user + */ + modulepar charstring PX_IMS_TS_UE1_PUBLIC_USER := "alice-06"; + + /** @desc charstring for RFC 2617 clause 3-2-2 username of UE1: + * The name of user in the specified realm + */ + modulepar charstring PX_IMS_TS_UE1_PRIVAT_USERNAME := "alice-06"; + + /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd of UE1: A known shared secret, the password of user of the specified username + */ + modulepar charstring PX_IMS_TS_UE1_PRIVAT_PASSWD := "alice-05@1234"; + + /** @desc charstring for RFC 2617 clause 3-2-1 qop options of UE1: + * Quoted string of one or more tokens indicating the "quality of protection" values supported by the server; the + * value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection. + */ + modulepar charstring PX_IMS_TS_UE1_QOP := "auth"; + + /** @desc charstring for UE1 display name + */ + modulepar charstring PX_IMS_TS_UE1_DISPLAY := "alice-05@domain.net"; + + } // End of group ts_ue1 + + group TS_SCSCF { + /** @desc charstring for TS/S-CSCF IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_TS_SCSCF_IPADDR := "172.31.10.4"; + + /** @desc integer for TS/S-CSCF port number to exchange SIP messages + */ + modulepar integer PX_IMS_TS_SCSCF_PORT := 5090; + + /** @desc charstring for TS/S-CSCFdomain + */ + modulepar charstring PX_IMS_TS_SCSCF_HOME_DOMAIN := "scscf.domain.net"; + + } // End of group TS_SCSCF + + } //end group TS { + +} // end module AtsSccas_PIXITS diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..d2446c974bb97a8708bbf649699c5e77a0716271 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -0,0 +1,685 @@ +module AtsSccas_Steps { + + // LibCommon + import from LibCommon_VerdictControl all; + + // LibSip + import from LibSip_Common all; + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from LibSip_Steps all; + import from LibSip_Templates all; + import from LibSip_Interface all; + import from LibSip_PIXITS all; + + // LibIms + import from LibIms_SIPTypesAndValues all; + import from LibIms_Steps all; + import from LibIms_Templates all; + import from LibIms_Interface all; + + // AtsSccas + import from AtsSccas_PIXITS all; + import from AtsSccas_Templates all; + + group Constants { + + group SdpUserProfileConstants { + + const integer c_userProfile_Vendor1 := 1; + + } // End of group SdpUserProfileConstants + + group UserProfileConstants { + // number of user profile (RESERVED: from 1-10 for SIP profile) + const integer c_userProfile_UE1atSUThome := 11; // location is SUT domain + const integer c_userProfile_UE2atSUThome := 12; // location is SUT domain + const integer c_userProfile_UE3atSUThome := 13; // location is SUT domain + const integer c_userProfile_UE4atSUThome := 14; // location is SUT domain + const integer c_userProfile_UE1atSUTvisiting := 21; // location is SUT domain + //const integer c_userProfile_UE2atSUTvisiting := 22; // location is SUT domain + const integer c_userProfile_IBCFwithUnknownUE := 28; // location is IMS1 domain + const integer c_userProfile_IBCFwithHomeUE := 29; // location is IMS1 domain + const integer c_userProfile_IBCFwithVisitingUE := 31; // location is IMS1 domain + const integer c_userProfile_PCSCFwithHomeUE := 41; // location is IMS1 domain + const integer c_userProfile_PCSCFwithVisitingUE := 42; // location is IMS1 domain + const integer c_userProfile_PCSCFwithVisitingUE2 := 43; // location is IMS1 domain + const integer c_userProfile_PCSCFwithUnknownVisitingUE := 44; // location is IMS1 domain + const integer c_userProfile_ICSCFwithHomeUE := 45; // location is IMS1 domain + const integer c_userProfile_SCSCFwithHomeUE := 46; // location is IMS1 domain + const integer c_userProfile_SCSCFwithHomeUE_domain :=55; + const integer c_userProfile_ECSCFwithHomeUE := 47; // location is IMS1 domain + const integer c_userProfile_ISUP := 49; // + const integer c_userProfile_AS1 := 51; // Isc userProfile at AS1 + const integer c_userProfile_AS2 := 52; // Isc userProfile at AS2 + + const integer c_userProfile_ESINetSubscriber := 53; + const integer c_userProfile_ESINetPSAP := 54; + const integer c_userProfile_ESINetUpstreamElement := 55; + + // number of interface profile + const integer c_interfaceProfile_IMS_SUT_IBCF1 := 100; // Ic interface at IBCF1 located in SUT + const integer c_interfaceProfile_IMS_SUT_IBCF2 := 101; // Ic interface at IBCF2 located in SUT + const integer c_interfaceProfile_IMS_SUT_PCSCF1 := 110; // Gm interface towards UE1 located in SUT + const integer c_interfaceProfile_IMS_SUT_PCSCF2 := 111; // Gm interface towards UE2 located in SUT + const integer c_interfaceProfile_IMS_SUT_PCSCF := 112; // Mw interface at P-CSCF located in SUT + const integer c_interfaceProfile_IMS_SUT_SCSCF := 113; // Mw interface at S-CSCF located in SUT + const integer c_interfaceProfile_IMS_SUT_ICSCF := 114; // Mw interface at I-CSCF located in SUT + const integer c_interfaceProfile_IMS_SUT_MGCF := 115; // Mw interface at MGCF located in SUT + const integer c_interfaceProfile_IMS_SUT_AS := 116; // Isc interface at AS located in SUT + const integer c_interfaceProfile_IMS_SUT_ECSCF := 117; // Mw interface at E-CSCF located in SUT + const integer c_interfaceProfile_IMS_SUT_BCF := 118; // SIP interface at BCF located in SUT + const integer c_interfaceProfile_SUT_LIS := 119; + const integer c_interfaceProfile_SUT_ECRF := 120; + const integer c_interfaceProfile_SUT_ESRP := 121; + + // number of conference profile + const integer c_conferenceProfile_factoryURI := 800; // conference factory URI + + // number of service profile + const integer c_serviceProfile_EMERGENCY := 112; + const integer c_serviceProfile_EMERGENCY_INVALID := 666; + const integer c_serviceProfile_SUBSCRIBER := 115; + const integer c_serviceProfile_SUBSCRIPTION_SERVICE := 116; + + // number of SIPURL identifiers + const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_domain := 1101; // c_interfaceProfile_IMS_SUT_PCSCF1 + const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_ip := 1102; // c_interfaceProfile_IMS_SUT_PCSCF1 + + } // End of group UserProfileConstants + + } // End of group Constants + + group globalSteps { + + /* + * + * @desc sets user parameters with PIXIT values + * @param p_user identifies the selected user configuration and location + * @verdict + */ + function f_init_sdp_userprofile( + inout SDP_Message p_loc_SDP, + in integer p_user, // TODO To be removed + in integer p_sdp_user + ) runs on ImsComponent { + + select(p_sdp_user){ + case (c_userProfile_UE1atSUThome) { // variant c_userProfile_UE1atSUThome + p_loc_SDP := valueof( + m_SDP_mediaList( + { + { { c_audio, { 20000, omit}, "RTP/AVP", {"0"} }, omit, omit, omit, omit, omit }, + { { c_video, { 20002, omit}, "RTP/AVP", {"31"} }, omit, omit, omit, omit, omit } + }, + vc_userprofile + ) + ); + vc_sdp_local.origin.user_name := PX_IMS_TS_UE1_PUBLIC_USER; + vc_sdp_local.origin.session_id := "2890844526"; + vc_sdp_local.origin.session_version := "2890842807"; + vc_sdp_local.origin.addr := "atlanta.example.com"; + vc_sdp_local.session_name := "c_userProfile_UE1atSUThome"; + f_append_media_attribute(vc_sdp_local, { rtpmap := {"0", {"PCMU", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"31", {"H261", "90000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { sendrecv := { } } ); + } // c_userProfile_UE1atSUThome + case (c_userProfile_Vendor1) { //variant c_userProfile_Vendor1 + p_loc_SDP := valueof( + m_SDP_mediaList( + { + { { c_audio, { 10500, omit}, "RTP/AVP", {"8", "0", "18", "4", "96", "97"} }, omit, omit, omit, omit, omit } + }, + vc_userprofile + ) + ); + vc_sdp_local.origin.user_name := "FAST_V2R1"; + vc_sdp_local.origin.session_id := "2006"; + vc_sdp_local.origin.session_version := "2007"; + vc_sdp_local.origin.addr := "155.11.49.64"; + vc_sdp_local.session_name := "-"; + f_append_media_attribute(vc_sdp_local, { rtpmap := {"0", {"PCMU", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"18", {"G729", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"4", {"G723", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"96", {"AMR", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"97", {"telephone-event", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { fmtp := { "97", { unstructured := "0-15" } } } ); + f_append_media_attribute(vc_sdp_local, { sendrecv := { } } ); + } // c_userProfile_Huawei + } // End of 'select' statement + + log("<<< f_init_sdp_userprofile: p_loc_SDP= ", p_loc_SDP); + } // End of function f_init_sdp_userprofile + + /* + * + * @desc sets user parameters with PIXIT values + * @param p_user identifies the selected user configuration and location + * @verdict + */ + function f_init_userprofile( + in integer p_user + ) runs on ImsComponent { + + select(p_user){ + case (c_userProfile_UE1atSUThome) { //variant c_userProfile_UE1atSUThome + vc_userprofile.id := p_user; + vc_userprofile.currPort := PX_IMS_TS_UE1_PORT; + vc_userprofile.currIpaddr := PX_IMS_TS_UE1_IPADDR; + vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; + vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; + vc_userprofile.bearerIpaddr := PX_IMS_TS_UE1_BEARER_IPADDR; + vc_userprofile.homeDomain := PX_IMS_TS_UE1_HOME_DOMAIN; + vc_userprofile.publUsername := PX_IMS_TS_UE1_PUBLIC_USER; + vc_userprofile.qop := PX_IMS_TS_UE1_QOP; + vc_userprofile.privUsername := PX_IMS_TS_UE1_PRIVAT_USERNAME; + vc_userprofile.passwd := PX_IMS_TS_UE1_PRIVAT_PASSWD; + vc_userprofile.registrarDomain := PX_IMS_TS_UE1_REGISTRAR; + } + case (c_userProfile_PCSCFwithHomeUE) { //variant c_userProfile_PCSCFwithHomeUE + //for MIME REGISTER to SCCAS(message originaly exchanged between PCSCF and SCSCF) + vc_userprofile.id := p_user; + vc_userprofile.currPort := PX_IMS_TS_UE1_PORT; + vc_userprofile.currIpaddr := PX_IMS_TS_UE1_IPADDR; + vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; + vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; + vc_userprofile.bearerIpaddr := PX_IMS_TS_UE1_BEARER_IPADDR; + vc_userprofile.homeDomain := PX_IMS_TS_UE1_HOME_DOMAIN; + vc_userprofile.publUsername := PX_IMS_TS_UE1_PUBLIC_USER; + vc_userprofile.qop := PX_IMS_TS_UE1_QOP; + vc_userprofile.privUsername := PX_IMS_TS_UE1_PRIVAT_USERNAME; + vc_userprofile.passwd := PX_IMS_TS_UE1_PRIVAT_PASSWD; + vc_userprofile.registrarDomain := PX_IMS_TS_UE1_REGISTRAR; + } + case (c_userProfile_SCSCFwithHomeUE) { //variant c_userProfile_SCSCFwithHomeUE + //for messages exchanged between S-CSCF and SCC-AS + vc_userprofile.id := p_user; + vc_userprofile.currPort := PX_IMS_TS_SCSCF_PORT; + vc_userprofile.currIpaddr := PX_IMS_TS_SCSCF_HOME_DOMAIN; + vc_userprofile.contactPort := PX_IMS_TS_SCSCF_PORT; + vc_userprofile.contactIpaddr := PX_IMS_TS_SCSCF_HOME_DOMAIN; //ip address or domain + vc_userprofile.bearerIpaddr := PX_IMS_TS_UE1_BEARER_IPADDR; + vc_userprofile.homeDomain := PX_IMS_TS_UE1_HOME_DOMAIN; + vc_userprofile.publUsername := PX_IMS_TS_UE1_PUBLIC_USER; + vc_userprofile.qop := PX_IMS_TS_UE1_QOP; + vc_userprofile.privUsername := PX_IMS_TS_UE1_PRIVAT_USERNAME; + vc_userprofile.passwd := PX_IMS_TS_UE1_PRIVAT_PASSWD; + vc_userprofile.registrarDomain := PX_IMS_TS_UE1_REGISTRAR; + } + } // End of 'select' statement + + } // End of function f_init_userprofile + + function f_initSipUrlFromCharstring(charstring p_uri) return SipUrl { + var charstring v_scheme := regexp(p_uri, charstring:"(sip[s]#(0,1)):([^@\\s]+)@?+", 0); + var charstring v_user := regexp(p_uri, charstring:"(sip[s]#(0,1)):([^@\\s]+)@?+", 1); + var charstring v_host_port := regexp(p_uri, charstring:"(sip[s]#(0,1)):([^@\\s]+)@(?+)", 2); + var charstring v_host := ""; + var charstring v_port := ""; + + template charstring t_has_port := pattern "?+:?+"; + if (match(v_host_port,t_has_port)) { + v_host := regexp(v_host_port, charstring:"(?+):(?+)",0); + v_port := regexp(v_host_port, charstring:"(?+):(?+)",1); + } else { + v_host := v_host_port; + v_port := "5060"; + } + + var SipUrl p_sipUrl := { + scheme := v_scheme, // contains "sip" + components := { + sip := { + userInfo := {userOrTelephoneSubscriber:=v_user, password:=omit}, + hostPort := { + host := v_host, // hostname, IPv4 or IPv6 + portField := str2int(v_port) // represented as an integer + } + } + }, + urlParameters := omit, + headers := omit + }; + + return(p_sipUrl) + } + + function f_initSipUrl( + in integer p_user + ) return SipUrl { + var SipUrl p_sipUrl := { + scheme := c_sipScheme, // contains "sip" + components := { + sip := { + userInfo := omit, + hostPort := { + host := omit, // hostname, IPv4 or IPv6 + portField := omit // represented as an integer + } + } + }, + urlParameters := omit, + headers := omit + }; + + select(p_user) { + case (c_userProfile_UE1atSUThome) { + p_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_TS_UE1_PUBLIC_USER, password:=omit}; + p_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_UE1_HOME_DOMAIN, portField :=omit} + } +// case (c_userProfile_UE2atSUThome) { +// p_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE2_PUBLIC_USER, password:=omit}; +// p_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE2_HOME_DOMAIN, portField :=omit} +// } +// case (c_serviceProfile_EMERGENCY) { +// p_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_EMERGENCY_SERVICE, password:=omit}; +// p_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_EMERGENCY_HOME_DOMAIN, portField :=omit} +// } + case (c_serviceProfile_SUBSCRIBER) { + p_sipUrl.components.sip.userInfo := { userOrTelephoneSubscriber := PX_IMS_TS_UE1_PUBLIC_USER, password := omit}; + p_sipUrl.components.sip.hostPort := {host := PX_IMS_TS_UE1_HOME_DOMAIN, portField :=omit} + } + + }; // End of 'select' statement + + return(p_sipUrl) + } // End of function f_initSipUrl + + + function f_initTelUrl( + in charstring p_subscriber + ) return SipUrl { + var SipUrl p_sipUrl := { + scheme := c_telScheme, // contains "tel" + components := { + tel := { + subscriber := p_subscriber + } + }, + urlParameters := omit, + headers := omit + }; + + return(p_sipUrl) + } // End of function f_initTelUrl + + function f_initUrnUrl( + in charstring p_namespaceId, + in charstring p_namespaceSpecificString + ) return SipUrl { + var SipUrl p_sipUrl := { + scheme := c_urnScheme, // contains "urn" + components := { + urn := { + namespaceId := p_namespaceId, + namespaceSpecificString := p_namespaceSpecificString + } + }, + urlParameters := omit, + headers := omit + }; + + return(p_sipUrl) + } // End of function f_initUrnUrl + + /* + * @desc sets user parameters with PIXIT values + * @param p_user identifies the selected user configuration and location + * @verdict + */ + function f_init_interfaceprofile( + in integer p_interface + ) runs on ImsComponent { + + vc_sent_label := { host := PX_IMS_SUT_AS_IPADDR, portField := PX_IMS_SUT_AS_PORT }; + + select(p_interface){ + //used for AS, TAS, SCC-AS + case (c_interfaceProfile_IMS_SUT_AS) { //variant c_interfaceProfile_IMS_SUT_AS + vc_interfaceprofile.SUTPort := PX_IMS_SUT_AS_PORT; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_AS_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_AS_HOME_DOMAIN; + } + } + } // End of function f_init_interfaceprofile + + } // End of group globalSteps + group SetHeaders{ + /** + * @desc function sets header field for the next outgoing REGISTER message + * @param p_cSeq_s CSeq parameter to be applied + * @param p_emergency Set to true in case of emergency + */ + function f_setHeaders_REGISTER_AS( //TODO review and repair params due to isc interface + inout CSeq p_cSeq_s, + boolean p_emergency := false + ) runs on SipComponent { + var SemicolonParam_List v_params := {}; + + f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via + vc_requestUri := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := vc_userprofile.registrarDomain, + portField := omit + } + } + }, + urlParameters := omit, + headers := omit + }; + + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + + vc_callId := { + fieldName := CALL_ID_E, + callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr + }; + vc_callIdReg := vc_callId; // remember callId for de-registration + vc_to := valueof(m_To(m_SipUrl_currDomain(vc_userprofile))); + vc_cancel_To := vc_to; + v_params := f_addParameter(v_params, + { + id := c_tagId, + paramValue := { + tokenOrHost := f_getRndTag() + } + }); + vc_from := { + fieldName := FROM_E, + addressField := vc_to.addressField, + fromParams := v_params + }; + + if (not vc_firstREGISTER_sent) { + if (p_emergency) { + v_params := { + { + "sos", + omit + } + }; + vc_contact.contactBody.contactAddresses[0].addressField.addrSpecUnion.urlParameters := v_params; + } + else { + v_params := { + { + id := c_expiresId, + paramValue := { + tokenOrHost := c_shortRegistration + } + } + }; + vc_contact.contactBody.contactAddresses[0].contactParams := v_params; + } + } + + vc_firstREGISTER_sent := true; // f_setHeaders_Register is called in deREGISTER function + vc_authorization := { + fieldName := AUTHORIZATION_E, + body := {f_calculatecCredentials_empty(vc_userprofile)} + }; + + vc_via_REG := vc_via; + } // end function setHeaders_REGISTER_AS + + + /** + * @desc function sets header field for the next outgoing REFER message + * @param p_cSeq_s CSeq parameter to be applied + */ + function f_setHeaders_REFER_AS( //TODO review and repair params due to isc interface + inout CSeq p_cSeq_s, + in SipUrl p_to_user, + in SipUrl p_from_user + ) runs on ImsComponent { + var SemicolonParam_List v_params := {}; + + //f_setHeadersGeneral(p_cSeq_s, "REFER"); // cseq, contact, branch, via + vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier + vc_from := f_initFromHeader(p_from_user, f_getRndTag()); // init of vc_from using userProfile identifier + vc_requestUri := p_to_user; // Request URI of Invite is identical with To header + if (vc_boo_route) { + vc_route := m_route_interface(vc_interfaceprofile); + } + if (vc_boo_recordRoute) { + vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile); + } + + LibSip_Steps.f_setHeadersREFER(p_cSeq_s); + } // end function setHeaders_REFER_AS + + /** + * @desc Sets Invite header fields (IMS addresses) extension of general settings from LibSip basic function + * @param p_cSeq_s The current cSeq + * @param p_to_user The selected user's SIP URL + */ + function f_setHeaders_INVITE_AS( + inout CSeq p_cSeq_s, + in SipUrl p_to_user, + in SipUrl p_from_user + ) runs on ImsComponent { + vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier + vc_from := f_initFromHeader(p_from_user, f_getRndTag()); // init of vc_from using userProfile identifier + vc_requestUri := p_to_user; // Request URI of Invite is identical with To header + if (vc_boo_route) { + vc_route := m_route_interface(vc_interfaceprofile); + } + if (vc_boo_recordRoute) { + vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile); + } + + LibSip_Steps.f_setHeadersINVITE(p_cSeq_s); + } // end f_setHeadersINVITE_AS + + /** + * @desc Sets BYE header fields (IMS addresses) extension of general settings from LibSip basic function + * @param p_cSeq_s The current cSeq + * @param p_to_user The selected user's SIP URL + */ + function f_setHeaders_BYE_AS( + inout CSeq p_cSeq_s, + in SipUrl p_to_user, + in SipUrl p_from_user + ) runs on ImsComponent { + vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier + vc_from := f_initFromHeader(p_from_user, f_getRndTag()); // init of vc_from using userProfile identifier + vc_requestUri := p_to_user; // Request URI of Invite is identical with To header + if (vc_boo_route) { + vc_route := m_route_interface(vc_interfaceprofile); + } + if (vc_boo_recordRoute) { + vc_recordRoute := m_recordRoute_currIpAddr(vc_userprofile); + } + + LibSip_Steps.f_setHeadersBYE(p_cSeq_s); + } // end f_setHeadersBYE_AS + + /** + * @desc setting of general and basic OPTIONS header fields in additon to the addresses (To, From, ReqUri) + * @param p_cSeq_s + */ + function f_setHeadersOPTIONS( + inout CSeq p_cSeq_s + ) runs on SipComponent { + f_setHeadersGeneral(p_cSeq_s, "OPTIONS"); // cseq, contact, branch, via + vc_callId := { + fieldName := CALL_ID_E, + callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr + }; + + vc_cancel_To := vc_to; + vc_caller_To := vc_to; + + vc_caller_From := vc_from; + + if (ischosen(vc_requestUri.components.sip)) { + // sip/sips call + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + } + else if (ischosen(vc_requestUri.components.urn)) { + // Emergency call + vc_reqUrnUri := vc_requestUri.components.urn; + } + else { + log("*** " & __SCOPE__ &": INFO:f_setHeadersOPTIONS: unsupported field: ", vc_requestUri," ***"); + setverdict(fail); + } + } + + } // End of group SetHeaders + + group CommonProcedures { + + function f_registrationAS(in CSeq p_cSeq_s) + runs on ImsComponent { + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_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_sccas("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; + + } + [] tc_ack.timeout { + f_setVerdict(e_timeout); + + } + } + } //end function f_registrationAS + + + function f_deregistrationAS(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_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; + } + [] tc_ack.timeout { + f_setVerdict(e_timeout); + } + } + } //end function f_deregistrationAS + + function f_EstablishDialogAS(in CSeq p_cSeq_s) + runs on ImsComponent { + var CSeq v_cSeq_s := p_cSeq_s; + } //end function f_EstablishDialogAS + + function f_ReleaseDialogAS(in CSeq p_cSeq_s) + runs on ImsComponent { + var CSeq v_cSeq_s := p_cSeq_s; + } //end function f_ReleaseDialogAS + + function f_PS2CSTransfer(in CSeq p_cSeq_s) + runs on ImsComponent { + var CSeq v_cSeq_s := p_cSeq_s; + } //end function f_PS2CSTransfer + + + /** + * @desc function send OPTIONS message + * @param p_request template of the message to be sent + */ + function f_SendOPTIONS( + template(value) OPTIONS_Request p_request + ) runs on SipComponent { + SIPP.send(p_request) to vc_sent_label; + } + + + } //end group CommonProcedures + +} // End of module AtsSccas_Steps diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..2988b4b52c868d8dd0632ee527815795b5751242 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -0,0 +1,4682 @@ +/* + * @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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_sccas("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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_sccas("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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_ATCF_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_sccas("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_ATCF_MGMT_URI} + }, + { + "g.3gpp.path", + {tokenOrHost := PX_ATCF_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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_ATCF_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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_ATCF_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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_3A_SIP_INVITE_responses_towards_the_MSC_Server{ + + /** + * @desc Verify that the SCCAS sends 1xx and/or 2xx response to the SIP INVITE request due to STN-SR or STN + * @param p_cSeq_s Random CSeq INVITE number + */ + function f_TC_ISC_SCCAS_GEN_INV_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + var Contact v_contact; + + f_registrationAS(v_cSeq_s); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + + f_EstablishDialogAS(v_cSeq_s); + + + f_IncCSeq(v_cSeq_s); + //TODO: assign new profile MSCwithUE for STN-SR number and uncomment...... + //f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_MSCwithUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); + + v_contact := valueof(vc_contact); + v_contact.contactBody.contactAddresses[0].contactParams := { + { + "g3gppMidcallMediaFeature_Tag" + }, + { + "g3gppSrvccAlertingFeature_Tag" + }, + { + "g3gppPs2csSrvccOrigPreAlertingMediaFeature_Tag" + } + }; + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + v_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_Response_PCV_FeatureCaps( + 200, + ?, + ?, + ?, + mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), + (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator")) + }) + )) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: response 200 OK was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.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_INV_03 + + } // End of group TP_6A_4_3A_SIP_INVITE_responses_towards_the_MSC_Server + + 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 + + group TP_6A_4_6_Rejecting_malicious_SIP_REFER_requests_from_remote_UE { + + /** + * @desc Verify that the SCCAS sends 403 response to the SIP REFER request from remote UE. + * @param p_cSeq_s Random CSeq INVITE number + */ + function f_TC_ISC_SCCAS_GEN_REF_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_REFER_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); + f_SendREFER( + m_sccas_refer_wo_contact( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_contact, + vc_from, vc_to, vc_via_REG, + m_referTo(vc_contact.contactBody.contactAddresses[0].addressField.nameAddr), + -, -,-, -,-,-, + m_MBody_SDP(vc_sdp_local) + )); + + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { + repeat + } + + [] SIPP.receive(mw_Response_PCV_FeatureCaps( + 403, + ?, + ?, + ?, + * + )) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: response 403 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.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_REF_01 + + }// End of group TP_6A_4_6_Rejecting_malicious_SIP_REFER_requests_from_remote_UEs + + group TP_6A_4_7_Protecting_from_malicious_SIP_INFO_requests_with_remote_leg_information_from_remote_UE { + /** + * @desc Verify that the SCCAS not include Accept,RecvInfo towards remote UE. + * @param p_cSeq_s Random CSeq INVITE number + */ + function f_TC_ISC_SCCAS_GEN_INF_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_wait.start; + alt { + [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { + repeat + } + [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) {//TO BE DONE : To be refined during validation + 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_INF_01 + + } //End of group TP_6A_4_7_Protecting_from_malicious_SIP_INFO_requests_with_remote_leg_information_from_remote_UE + } // 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 { + + // 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); + + + 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 + ) + + ); + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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; + + // Preamble + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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) + ); + + + // STEP: 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 + + )); + + + // EXPECTED: 200 ok + f_awaitingResponse(mw_sccas_Response_200mediaOnly(200, vc_callIdReg, p_cSeq_s, vc_from, vc_to, vc_via, ?, ?, ?, ?)); + + + 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; + + // Preamble + 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 + // the UE entity hasReceived200OkOnInitialRequestForDialogWith + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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) + ); + + // STEP: sen ACK + f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); + + // Expected: BYE + f_awaitingBYE(mw_BYE_Request_Base(?)); + + + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of f_TC_ISC_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; + + // Preamble + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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 + + + // 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 To be refined during validation: 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; + + // Preamble + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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 + + + // 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 To be refined during validation: correct use auf g3gppDrvccAlertingFeature + omit, // template(omit) Require p_require := omit, + vc_route, + m_supported_replaces, + m_messageBody_SDP_mediaOnly + + ) + + ); + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + m_messageBody_SDP_mediaOnly // 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 + // Expectation: 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_RES_01(in CSeq p_cSeq_s) + runs on ImsComponent { + + // Preamble + 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 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 + )); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + f_awaitingPRACK(mw_PRACK_Request_sdp(vc_callId, ?)); + f_awaitingUPDATE(mw_UPDATE_Request_ContactChange(vc_callId, vc_contact, mw_contentType_appclication_sdp, ?)); + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of f_TC_ISC_SCCAS_PCT_RES_01 + + function f_TC_ISC_SCCAS_MED_BYE_01(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); + + action("trigger for event unclear, transfer of a session is successfully completed"); // TODO: trigger for event unclear, transfer of a session is successfully completed + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + + f_awaitingBYE(mw_BYE_Request_via_PChargingVector_UE(vc_callId, ?, ?)); + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of f_TC_ISC_SCCAS_MED_BYE_01 + + function f_ISC_SCCAS_MED_RES_01(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); + + action("trigger for event unclear, transfer of a session is successfully completed"); // TODO: trigger for event unclear, transfer of a session is successfully completed + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine480, vc_callId, p_cSeq_s)) { + 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 f_ISC_SCCAS_MED_RES_01 + + function f_TC_ISC_SCCAS_MED_RIN_01(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 ACK + f_setHeadersACK(); + f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); // TODO: trigger for event unclear, transfer of a session is successfully completed + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + f_awaitingINVITE(mw_INVITE_Request_AS(?)); + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of f_TC_ISC_SCCAS_MED_RIN_01 + + function f_TC_ISC_SCCAS_PCT_UPD_01(in CSeq p_cSeq_s) + runs on ImsComponent { + + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preamble + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + v_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine180, vc_callId, v_cSeq_s)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Response 180 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + + // 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 + )); + + // TODO To be refined during validation: PEarlyMedia indicating value "the last received P-Early-Media header field", + + // Contact indicating value "set to the Contact header field provided by the served UE at the creation of the dialog", + // 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_UPD_01 + + function f_TC_ISC_SCCAS_PCT_INV_05(in CSeq p_cSeq_s) + runs on ImsComponent { + + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preamble + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + v_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine180, vc_callId, v_cSeq_s)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Response 180 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + + // 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 + )); + + // // TODO To be refined during validation: PEarlyMedia indicating value "the last received P-Early-Media header field", + + // Contact indicating value "set to the Contact header field provided by the served UE at the creation of the dialog", + // 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_REF_01(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); + + // Send REFER + LibIms_Steps.f_setHeadersREFER(p_cSeq_s, vc_to.addressField.addrSpecUnion); + f_SendREFER( + m_sccas_refer( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_contact, + vc_from, + vc_to, + vc_via_REG, + m_ReferTo_SipUrl(vc_to.addressField.addrSpecUnion, { tokenOrHost := "" }), + omit, + omit, + vc_route, + omit, + m_supported_replaces, + omit, + m_messageBody_SDP_mediaOnly, + m_ReferSub(false) + )); + + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_403Forbidden( + vc_callId, + vc_cSeq + )) { + 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_01 + + function f_TC_ISC_SCCAS_PCT_RES_02(in CSeq p_cSeq_s) + runs on ImsComponent { + + // Preamble + 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_SDPMessage( + vc_callId, + vc_cSeq, + ?, // TODO To be refined during validation, 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_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, vc_callId, v_cSeq_s)) { + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_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, vc_callId, v_cSeq_s)) { + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_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, vc_callId, v_cSeq_s)) { + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_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, vc_callId, v_cSeq_s)) { + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_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, vc_callId, v_cSeq_s)) { + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_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, vc_callId, v_cSeq_s)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Response 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_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, vc_callId, v_cSeq_s)) { + 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 the SCCAS distinguish SIP INVITE with STN-SR for nonexisting dialog. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_SRA_INV_01(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 + + // Call initiation + 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_targetDialog( + 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_StatusCode_Base( + 480, + vc_callId, + vc_cSeq + )) { + tc_wait.stop; + log("*** " & __SCOPE__ & ": PASS: response 480 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_SRA_INV_01 + + /** + * @desc Verify that the SCCAS distinguish SIP INVITE with STN-SR and informs remote UE. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_SRA_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 + + // Call initiation + 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_targetDialog( + 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_2xx_mbody( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + -, + -, + m_MBody_SDP(vc_sdp_remote) + )); + } + [] 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_StatusCode_Base( + 200, + ?, + ? + )) { + tc_wait.stop; + log("*** " & __SCOPE__ & ": PASS: response 200 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_SRA_INV_02 + + /** + * @desc Verify that the SCCAS distinguish Transfer of first session. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_SRA_INV_03(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 + + // Call initiation + 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_targetDialog( + 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_2xx_mbody( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + -, + -, + m_MBody_SDP(vc_sdp_remote) + )); + } + [] 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_StatusCode_Base( + 200, + ?, + ? + )) { + tc_wait.stop; + log("*** " & __SCOPE__ & ": PASS: response 200 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_SRA_INV_03 + + /** + * @desc Verify that the SCCAS distinguish SIP INVITE with STN-SR and not release source leg. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_SRA_INV_04(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); + + //reINVITE + 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_reason( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local), + m_Reason(487) + )); + + tc_ack.start; + alt { + [] SIPP.receive(mw_BYE_Request_Base(vc_callId)) { + log("*** " & __SCOPE__ & ": FAIL: BYE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + [] 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_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_BYE_Request_Base(vc_callId)) { + log("*** " & __SCOPE__ & ": FAIL: BYE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + [] SIPP.receive(mw_Response_StatusCode_Base( + 200, + ?, + ?)) { + 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_SRA_INV_04 + + /** + * @desc Verify that the SCCAS distinguish SIP INVITE with STN-SR and not release source leg. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_SRA_BYE_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); + + //Send BYE with reason 503 + f_IncCSeq(v_cSeq_s); + f_setHeaders_BYE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); + + f_SendBYE( + m_sccas_bye_reason( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + -, m_Reason(503) + )); + + tc_ack.start; + alt { + [] SIPP.receive(mw_BYE_Request_Base(vc_callId)) { + log("*** " & __SCOPE__ & ": FAIL: BYE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + + [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); + + + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.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_SRA_BYE_01 + + /** + * @desc Verify that the SCCAS distinguish SIP BYE with STN-SR and release source leg after OperatiorSpecificTimer timeout. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_SRA_BYE_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_PS2CSTransfer(v_cSeq_s); + + //Send BYE with reason 503 + f_IncCSeq(v_cSeq_s); + f_setHeaders_BYE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); + + f_SendBYE(m_sccas_bye_targetDialog( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + -,-,-,-, + m_Reason(503) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_2xx_Base(vc_callId, vc_cSeq)) { + log("*** " & __SCOPE__ & ": PASS: 200 Ok message was received ***") + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + tc_ack.start; + alt { + [] SIPP.receive(mw_BYE_Request_Base(vc_callId)) { + log("*** " & __SCOPE__ & ": PASS: BYE message was received ***"); + + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ack.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_SRA_BYE_02 + + /** + * @desc Verify that the SCCAS distinguish SIP BYE with STN-SR and release source leg on BYE Cause different from Cause Q850 31. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_SRA_BYE_03(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_PS2CSTransfer(v_cSeq_s); + + //Send BYE with reason 503 + f_IncCSeq(v_cSeq_s); + f_setHeaders_BYE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); + + f_SendBYE(m_sccas_bye_targetDialog( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + -,-,-,-, + m_Reason(16) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_2xx_Base(vc_callId, vc_cSeq)) { + log("*** " & __SCOPE__ & ": PASS: 200 Ok message was received ***") + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + tc_ack.start; + alt { + [] SIPP.receive(mw_BYE_Request_Base(vc_callId)) { + log("*** " & __SCOPE__ & ": PASS: BYE message was received ***"); + + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ack.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_SRA_BYE_03 + + /** + * @desc Verify that the SCCAS distinguish SIP CANCEL and release session transfered leg after OperatiorSpecificTimer timeout. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_SRA_CAN_01(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 + + // Call initiation + 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_targetDialog( + 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 ***"); + // Cancelation + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersCANCEL(v_cSeq_s); + f_SendCANCEL( + m_CANCEL_Request_Reason_IMS( + vc_requestUri, + vc_callId, + v_cSeq_s, + vc_from, vc_to, vc_via_REG,vc_route, + 31 + )); + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, v_cSeq_s)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + repeat; + }[] SIPP.receive(mw_CANCEL_Request_Base(?)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: CANCEL message was received ***"); + f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); + + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.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_SRA_CAN_01 + + /** + * @desc Verify that the SCCAS send 200Ok_CANCEL and release PStoCS session transfered leg in alerting state for terminating user. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_SRA_CAN_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 + + // Call initiation + 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_targetDialog( + 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 ***"); + // Cancelation + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersCANCEL(v_cSeq_s); + f_SendCANCEL( + m_CANCEL_Request_Reason_IMS( + vc_requestUri, + vc_callId, + v_cSeq_s, + vc_from, vc_to, vc_via_REG,vc_route, + 31 + )); + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, v_cSeq_s)) { + 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 + } + } + + // Postamble + f_deregistrationAS(v_cSeq_s); + + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_SRA_CAN_02 + + /** + * @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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_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, vc_callId, v_cSeq_s)) { + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_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, vc_callId, v_cSeq_s)) { + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, v_cSeq_s)) { + 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 SCC AS correctly recognizes and initiated procedures for PS to CS dual radio access transfer of an additional session in an early dialog phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PCT_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); + // 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 + + // STEP: send 488 notAcceptableHere + f_sendResponse(m_Response_Base(c_statusLine488, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); + + // Expectation: 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 function f_TC_ISC_SCCAS_PCT_INV_04 + + /** + * @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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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); + LibSip_Steps.f_setHeadersOPTIONS(v_cSeq_s); + AtsSccas_Steps.f_SendOPTIONS( + m_OPTIONS_Request_Base( + vc_requestUri, + vc_callId, + v_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, v_cSeq_s)) { + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_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, vc_callId, v_cSeq_s)) { + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine180, vc_callId, v_cSeq_s)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Response 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183, vc_callId, v_cSeq_s)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Response 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local), + m_accept("application/vnd.3gpp.mid-call+xml") + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, v_cSeq_s)) { + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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), + m_accept("application/vnd.3gpp.mid-call+xml") + )); + 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine180, vc_callId, v_cSeq_s)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Response 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183, vc_callId, v_cSeq_s)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Response 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_TS_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_TS_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, + v_cSeq_s, + vc_from, vc_to, vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, v_cSeq_s)) { + 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 \ No newline at end of file diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..e061811528b4921568fdc5d6bb3cf3114e1c8571 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -0,0 +1,383 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides the TCfunctions used by the test component + * for SCCAS tests. + */ +module AtsSccas_TCFunctions_TS124292 { + // 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; + + group isc_registration { + + /* + * @desc This is the test case function for TC_ISC_SCCAS_MSC_REG_01 + * @param p_cSeq_s + */ + function f_TC_ISC_SCCAS_MSC_REG_01(in CSeq p_cSeq_s) runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s; + + // 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_awaitingRegistration_IMS( + v_cSeq_s, + valueof(m_SipUrl_currDomain(vc_userprofile)), + PX_IMS_TS_UE1_QOP, + mw_sccas_register( + -, + mw_pChargingVector(-, *), // TODO To be refined during validation - Clause 6.3.2 Initial registration Point 11 + mw_pVisitedNetworkID(?), // TODO To be refined during validation - Clause 6.3.2 Initial registration Point 12 + -, // See helper f_check_contact_msc + mw_Authorization_digest( // Clause 6.3.2 Initial registration Point 4 + mw_digestResponse( + ( + {"username", {tokenOrHost := PX_IMS_TS_UE1_PRIVAT_USERNAME}}, + {"realm", {tokenOrHost := PX_IMS_TS_UE1_PUBLIC_USER}}, + {"integrity-protected", {tokenOrHost := "auth-done"}}, + {"nonce", {tokenOrHost := ""}} + )) + ), + m_expires(600000), // Clause 6.3.2 Initial registration Point 7 + mw_sccas_supported({"gruu"}), // Clause 6.3.2 Initial registration Point 8 + mw_require_path, // Clause 6.3.2 Initial registration Point 9 + mw_pAccessNetworkInfo // TODO To be refined during validation - Clause 6.3.2 Initial registration Point 13 + )); + // Check vc_request.msgHeader.contact for 3GPP requirement + f_check_contact_msc(vc_request.msgHeader.contact); // Clause 6.3.2 Initial registration Point 5 + f_check_via_msc(vc_request.msgHeader.via); // Clause 6.3.2 Initial registration Point 6 + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // Deregistration + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_MSC_REG_01 + + /* + * @desc This is the test case function for TC_ISC_SCCAS_MSC_REG_02 + * @param p_cSeq_s + */ + function f_TC_ISC_SCCAS_MSC_REG_02(in CSeq p_cSeq_s) runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s; + + // 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_awaitingRegistration_IMS( + v_cSeq_s, + valueof(m_SipUrl_currDomain(vc_userprofile)), + PX_IMS_TS_UE1_QOP, + mw_sccas_register( + -, + mw_pChargingVector(-, *), // TODO To be refined during validation - Clause 6.3.2 Initial registration Point 11 + mw_pVisitedNetworkID(?), // TODO To be refined during validation - Clause 6.3.2 Initial registration Point 12 + -, // See helper f_check_contact_msc + mw_Authorization_digest( // Clause 6.3.2 Initial registration Point 4 + mw_digestResponse( + ( + {"username", {tokenOrHost := PX_IMS_TS_UE1_PRIVAT_USERNAME}}, + {"realm", {tokenOrHost := PX_IMS_TS_UE1_PUBLIC_USER}}, + {"integrity-protected", {tokenOrHost := "auth-done"}}, + {"nonce", {tokenOrHost := ""}} + )) + ), + m_expires(600000), // Clause 6.3.2 Initial registration Point 7 + mw_sccas_supported({"gruu"}), // Clause 6.3.2 Initial registration Point 8 + mw_require_path, // Clause 6.3.2 Initial registration Point 9 + mw_pAccessNetworkInfo // TODO To be refined during validation - Clause 6.3.2 Initial registration Point 13 + )); + // Check vc_request.msgHeader.contact for 3GPP requirement + f_check_contact_msc(vc_request.msgHeader.contact); // Clause 6.3.2 Initial registration Point 5 + f_check_via_msc(vc_request.msgHeader.via); // Clause 6.3.2 Initial registration Point 6 + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // Deregistration + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_MSC_REG_02 + + } // End of group isc_registration + + group isc_subscribe { + + /* + * @desc This is the test case function for TC_ISC_SCCAS_MSC_SUB_01 + * @param p_cSeq_s + */ + function f_TC_ISC_SCCAS_MSC_SUB_01(in CSeq p_cSeq_s) runs on ImsComponent { + // Local variables + var template SUBSCRIBE_Request v_subscibe; + + // Preambule + v_subscibe := valueof( + m_SUBSCRIBE_Request_Base( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG + )); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // Deregistration + + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_MSC_SUB_01 + + /* + * @desc This is the test case function for TC_ISC_SCCAS_MSC_SUB_02 + * @param p_cSeq_s + */ + function f_TC_ISC_SCCAS_MSC_SUB_02(in CSeq p_cSeq_s) runs on ImsComponent { + // Local variables + var template SUBSCRIBE_Request v_subscibe; + + // Preambule + v_subscibe := valueof( + m_SUBSCRIBE_Request_Base( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG + )); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // Deregistration + + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_MSC_SUB_02 + + } // End of isc_subscribe + + group isc_reregistration { + + /* + * @desc This is the test case function for TC_ISC_SCCAS_MSC_REREG_01 + * @param p_cSeq_s + */ + function f_TC_ISC_SCCAS_MSC_REREG_01(in CSeq p_cSeq_s) runs on ImsComponent { + // Local variables + var template REGISTER_Request v_register; + + // Preambule + v_register := valueof( + m_REGISTER_Request_Base( + vc_requestUri, + vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, + vc_authorization + )); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // Deregistration + + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_MSC_REREG_01 + + /* + * @desc This is the test case function for TC_ISC_SCCAS_MSC_REREG_02 + * @param p_cSeq_s + */ + function f_TC_ISC_SCCAS_MSC_REREG_02(in CSeq p_cSeq_s) runs on ImsComponent { + // Local variables + var template REGISTER_Request v_register; + + // Preambule + v_register := valueof( + m_REGISTER_Request_Base( + vc_requestUri, + vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, + vc_authorization + )); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // Deregistration + + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_MSC_REREG_02 + + } // End of isc_reregistration + + group call_origination { + + /* + * @desc This is the test case function for TC_ISC_SCCAS_MSC_CALL_ORG_01 + * @param p_cSeq_s + */ + function f_TC_ISC_SCCAS_MSC_CALL_ORG_01(in CSeq p_cSeq_s) runs on ImsComponent { + // Local variables + var template INVITE_Request v_invite; + + // Preambule + /*f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_BCF); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + v_invite := valueof( + m_INVITE_Request_sdp( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + vc_authorization, + m_MBody_SDP(vc_sdp_local) + ));*/ + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // Deregistration + + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_MSC_CALL_ORG_01 + + /* + * @desc This is the test case function for TC_ISC_SCCAS_MSC_CALL_ORG_02 + * @param p_cSeq_s + */ + function f_TC_ISC_SCCAS_MSC_CALL_ORG_02(in CSeq p_cSeq_s) runs on ImsComponent { + // Local variables + var template INVITE_Request v_invite; + + // Preambule + /*v_invite := valueof( + m_REGISTER_Request_Base( + vc_requestUri, + vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, + vc_authorization + ));*/ + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // Deregistration + + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_MSC_CALL_ORG_02 + + } // End of group call_origination + + group helpers { + + // Check vc_request.msgHeader.contact for 3GPP requirement + function f_check_contact_msc(in Contact p_contact) runs on ImsComponent { + + if (ischosen(p_contact.contactBody.wildcard) == false) { + log("f_check_contact_msc: FAIL: Invalid contact content"); + f_setVerdict(e_error); + return; + } + + // Looking for g.3gpp.icsi-ref + var template charstring m_found_pattern := pattern "*g.3gpp.icsi-ref*"; + if (regexp(p_contact.contactBody.wildcard, m_found_pattern, 0) == "") { + log("f_check_contact_msc: FAIL: g.3gpp.icsi-ref is not present"); + f_setVerdict(e_error); // g.3gpp.icsi-ref is not present + return; + } + + // Looking for g.3gpp.icsi-ref media + m_found_pattern := pattern "*g.3gpp.icsi-ref media*"; + if (regexp(p_contact.contactBody.wildcard, m_found_pattern, 0) == "") { + log("f_check_contact_msc: FAIL: g.3gpp.icsi-ref media is not present"); + f_setVerdict(e_error); // g.3gpp.icsi-ref media is not present + return; + } + + // not containing "reg-id" + m_found_pattern := pattern "*reg-id*"; + if (regexp(p_contact.contactBody.wildcard, m_found_pattern, 0) != "") { + log("f_check_contact_msc: FAIL: reg-id should not be present"); + f_setVerdict(e_error); // reg-id should not be present + return; + } + + // Checking succeed, keep current status + } // End of f_check_contact_msc + + // Check vc_request.msgHeader.via for IP address or FQDN of the MSC Server + function f_check_via_msc(in Via p_via) runs on ImsComponent { + + for (var integer i := 0; i < lengthof(p_via.viaBody); i := i + 1) { + // TODO: check + /*record ViaBody { + SentProtocol sentProtocol, + HostPort sentBy, + SemicolonParam_List viaParams optional + } + record SentProtocol { + charstring protocolName, + charstring protocolVersion, + charstring transport + } +*/ + } // End of 'for' statement + + // Checking succeed, keep current status + } // End of function f_check_via_msc + + } // End of group helpers + +} // End of module AtsSccas_TCFunctions_TS124292 \ No newline at end of file diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a390f585bd433b69643f819efab1f9d6e02b49d5 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -0,0 +1,1040 @@ +/* + * @author TTF T016 + * @version $Id: AtsIms_Templates.ttcn + * @desc This module provides the templates used by the SCCAS + */ + +module AtsSccas_Templates +{ + + //LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_MessageBodyTypes all; + import from LibSip_Templates all; + import from LibSip_Common all; + + //LibIms + import from LibIms_SIPTypesAndValues all; + import from LibIms_Templates all; + + import from LibSip_SDPTypes all; + + group HeaderTemplates { + + template (value) Supported m_sccas_supported( + in OptionTag_List p_optionsTags + ) modifies m_supported := { + optionsTags := p_optionsTags + } // End of template m_sccas_supported + + template (present) Supported mw_sccas_supported( + template (present) OptionTag_List p_optionsTags := ? + ) := { + fieldName := SUPPORTED_E, + optionsTags := p_optionsTags + } // End of template mw_sccas_supported + + template (value) FeatureCaps m_sccas_featureCaps( + in template (value) FcValue_List p_fcValues + ) := { + fieldName := FEATURE_CAPS_E, + fcValues := p_fcValues + } // End of template m_sccas_featureCaps + + template (present) FeatureCaps mw_sccas_featureCaps( + template (present) FcValue_List p_fcValues := ? + ) := { + fieldName := FEATURE_CAPS_E, + fcValues := p_fcValues + } // End of template mw_sccas_featureCaps + + template (omit) FcValue m_fcValue( + in charstring p_wildcard, + in template (omit) SemicolonParam_List p_fcParams := omit + ) := { + wildcard := p_wildcard, + fcParams := p_fcParams + } // End of template m_fcValue + + template (present) FcValue mw_fcValue( + template (present) charstring p_wildcard := ?, + template SemicolonParam_List p_fcParams := * + ) := { + wildcard := p_wildcard, + fcParams := p_fcParams + } // End of template mw_fcValue + + template(value) Contact m_sccas_contact( + in template (value) SipUrl p_sipUrl, + in template (value) SemicolonParam_List p_contactParams + ) modifies m_Contact := { + contactBody := { + contactAddresses := { + { + contactParams := p_contactParams + } + } + } + } // End of template m_sccas_contact + + template (present) LibSip_SIPTypesAndValues.Contact mw_sccas_contact( + template (present) ContactBody p_contact_body := ?, + template SemicolonParam_List p_contactParams := * + ) := { + fieldName := CONTACT_E, + contactBody := p_contact_body + } // End of template mw_sccas_contact + + template (present) PAccessNetworkInfo mw_pAccessNetworkInfo := { // TODO To be refined + fieldName := P_ACCESS_NETWORK_INFO_E, + accessType := ?, + genericParams := ? + } // End of template mw_pAccessNetworkInfo + + group HeaderTemplatesAxel { + + template LibSip_SIPTypesAndValues.Contact m_contact_wildcard (charstring p_wildcard):= { + fieldName := CONTACT_E, + contactBody := { + wildcard := + p_wildcard + } + } + + } + + group HeaderTemplatesSteffen { + } + + group HeaderTemplatesBostjan { + + + + + template (value) TargetDialog m_targetDialog (in template (value) CallidString p_callidString) := + { + fieldName := TARGET_DIALOG_E, + callid := p_callidString, + tdParam := omit + } + + template (omit) Require m_require (in template (omit) OptionTag_List p_optionTag_List := omit) := + { + fieldName := REQUIRE_E, + optionsTags := p_optionTag_List + } + + } + + group HeaderTemplatesIztok { + + template (present) Accept mw_accept( + template (present) AcceptBody_List p_acceptArgs := ? + ) := { + fieldName := ACCEPT_E, + acceptArgs := p_acceptArgs + } + + template (present) RecvInfo mw_recvinfo( + template (present) InfoPackage_List p_infoPackage_list := ? + ) :={ + fieldName := RECV_INFO_E, + infoPackageList := p_infoPackage_list + } + + template ReferTo m_referTo(template NameAddr p_nameaddr, template SemicolonParam_List p_refertoparams := omit) := { + + fieldName := REFER_TO_E, + nameAddr := p_nameaddr , + referToParams := p_refertoparams + } + + } + + group HeaderTemplatesYann { + + template (value) Accept m_accept( + in template (value) charstring p_mediaRange + ) := { + fieldName := ACCEPT_E, + acceptArgs := { + { + mediaRange := p_mediaRange, + acceptParam := omit + } } + } // End of template m_accept + + } + + } // End of group HeaderTemplates + + group MessageTemplates { + + group modified_templates { + + group request_sent { + + template (omit) REGISTER_Request m_sccas_register( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit, + template(omit) Authorization p_authorization := omit, + template(value) charstring p_host, + template(value) integer p_port, + template(value) DeltaSec p_deltaSec, + template(omit) FeatureCaps p_featureCaps := omit, + template(omit) ContentType p_contentType := omit, + template(omit) MessageBody p_mb := omit + + ) modifies m_REGISTER_Request_expires_IMS := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := p_contentType, + expires := m_expires(str2int(valueof(p_deltaSec))), + featureCaps := p_featureCaps + }, + messageBody := p_mb + } + group request_sent_Axel { + + template (omit) INVITE_Request m_sccas_invite_replaces( + in template(value) SipUrl p_requestUri, + in template(value) CallId p_callId, + in template(value) CSeq p_cSeq, + in template(value) From p_from, + in template(value) To p_to, + in template(value) LibSip_SIPTypesAndValues.Via p_via, + in template(value) LibSip_SIPTypesAndValues.Contact p_contact, + in template(omit) Require p_require := omit, + in template(omit) Route p_route := omit, + in template(omit) Supported p_supported := omit, + in template(value) MessageBody p_mb, + in template(omit) Replaces p_replaces := omit + ) modifies m_INVITE_Request_UE := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := m_contentType(c_sdpApplication) + }, + messageBody := p_mb + } + + } + + group request_sent_Steffen { + + + template LibSip_SIPTypesAndValues.Contact m_contact_g3gppDrvccOrigPreAlertingFeature := { + fieldName := CONTACT_E, + contactBody := { + wildcard := + "g3gppDrvccOrigPreAlertingFeature" + } + } + + template LibSip_SIPTypesAndValues.Contact m_contact_g3gppSrvccAlertingFeature := { + fieldName := CONTACT_E, + contactBody := { + wildcard := + "g3gppSrvccAlertingFeatureCapabilityIndicator" + } + } + + template LibSip_SIPTypesAndValues.Contact m_contact_g3gppDrvccAlertingFeature := { + fieldName := CONTACT_E, + contactBody := { + wildcard := + "g3gppDrvccAlertingFeature" + } + } + + + template LibSip_MessageBodyTypes.MessageBody m_messageBody_SDP_mediaOnly := { + sdpMessageBody := { + protocol_version := 1, // TODO + origin := { + user_name := "username", // TODO + session_id := "sessionID", // TODO + session_version := "sessionVersion", // TODO + net_type := "netType", // TODO + addr_type := "addrType", // TODO + addr := "addr" // TODO + }, + session_name := "sessionName", // TODO + information := omit, + uri := omit, + emails := omit, + phone_numbers := omit, + connection := omit, + bandwidth := omit, + times := { + { + time_field := { + start_time := "start", // TODO + stop_time //* field is numeric strings // TODO + //* that may not fit into + //* 32-bit signed int + := "stop" + }, + time_repeat := omit + } + }, + timezone_adjustments := omit, + key := omit, + attributes := omit, + media_list := { + { + media_field := { + media := "media", + ports := { + port_number := 1, + num_of_ports := omit + }, + transport := "transport", + fmts := {"fmts"} + }, + information := omit, + connections := omit, + bandwidth := omit, + key := omit, + attributes := omit + } + } + } + } + + + + template Supported m_supported_replaces := + { + fieldName := SUPPORTED_E, + optionsTags := omit + } + + template (omit) INVITE_Request m_sccas_invite_contact( + template (value) SipUrl p_requestUri, + template (value) CallId p_callId, + template (value) CSeq p_cSeq, + template (value) From p_from, + template (value) To p_to, + template (value) Via p_via, + template (value) Contact p_contact, + template (omit) Require p_require := omit, + template (omit) Route p_route := omit, + template (omit) Supported p_supported := omit, + template (value) MessageBody p_mb + ) modifies m_INVITE_Request_UE := { + msgHeader := { + callId := p_callId, + contact := p_contact, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + via := p_via + }, + messageBody := p_mb, + payload := omit + } + + + } + + group request_sent_Bostjan { + + template (omit) INVITE_Request m_sccas_invite_targetDialog( + in template (value) SipUrl p_requestUri, + in template (value) CallId p_callId, + in template (value) CSeq p_cSeq, + in template (value) From p_from, + in template (value) To p_to, + in template (value) LibSip_SIPTypesAndValues.Via p_via, + in template (value) LibSip_SIPTypesAndValues.Contact p_contact, + in template (omit) Require p_require := m_require({"tdialog"}), + in template (omit) Route p_route := omit, + in template (omit) Supported p_supported := omit, + in template (value) MessageBody p_mb, + in template (value) TargetDialog p_targetDialog := m_targetDialog("CallidString"), + in template (omit) PAssertedID p_pAssertedID := omit//m_PAssertedID(m_AddrUnion_NameAddr(m_NameAddr(,))), + ) modifies m_INVITE_Request_UE := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := m_contentType(c_sdpApplication), + targetDialog := p_targetDialog, + pAssertedID := p_pAssertedID + }, + messageBody := p_mb + } + + template (omit) INVITE_Request m_sccas_invite_reason( + in template (value) SipUrl p_requestUri, + in template (value) CallId p_callId, + in template (value) CSeq p_cSeq, + in template (value) From p_from, + in template (value) To p_to, + in template (value) LibSip_SIPTypesAndValues.Via p_via, + in template (value) LibSip_SIPTypesAndValues.Contact p_contact, + in template (omit) Require p_require := m_require({"tdialog"}), + in template (omit) Route p_route := omit, + in template (omit) Supported p_supported := omit, + in template (value) MessageBody p_mb, + in template (value) Reason p_reason := m_Reason(487) + ) modifies m_INVITE_Request_UE := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := m_contentType(c_sdpApplication), + reason := p_reason + }, + messageBody := p_mb + } + + + } + + group request_sent_Iztok { + //SIP name application + const charstring c_sipMessage := "message/sip"; + const charstring c_mimeMultipart := "multipart/mixed"; + + const charstring c_boundary := "--m5hnsik49jfkg"; + + template(value) GenericParam m_contentTypeBoundary(charstring p_boundary) := { + id := "boundary", + paramValue := { tokenOrHost := p_boundary } + } + + //module LibSip_MessageBodyTypes + // group MIMETypes { + // type union MIME_Encapsulated_Parts { + // SDP_Message sdpMessageBody, + // XmlBody xmlBody, // if there is XML body + // MsdBody msdBody, // RFC 8147: Minimum Set of Data octets + // RequestUnion sipReq, //TODO in libsip sip message + // Response sipRsp //TODO in libsip sip response + // } + template(value) MessageBody m_MBody_MIME_SipReqResp( + charstring p_boundary, + template(value) RequestUnion p_request, + template(value) Response p_response + ) := { + mimeMessageBody := { + boundary := /*"--" & */p_boundary, + mimeEncapsulatedList := { + { + content_type := c_sipMessage, + content_disposition := omit, + content_id := omit, + mime_encapsulated_part := {msdBody:= '00'O} //TODO remove + //TODO uncoment mime_encapsulated_part := {sipReq := p_request} + }, + { + content_type := c_sipMessage, + content_disposition := omit, + content_id := omit, + mime_encapsulated_part := {msdBody:= '00'O} //TODO remove + //TODO uncoment mime_encapsulated_part := {sipRes := p_response} + } + } + } + } + + template ServiceRoute m_serviceroute_ims(SipUrl p_serviceroute_sip_url ) := { + + fieldName := SERVICE_ROUTE_E, + routeBody := { + { + nameAddr := { + displayName := omit, + addrSpec := p_serviceroute_sip_url + }, + rrParam := omit + } + } + } + template (omit) REGISTER_Request m_register_ue_srvcc( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit, + template(omit) Authorization p_authorization := omit, + template(value) charstring p_host, + template(value) integer p_port, + template(value) DeltaSec p_deltaSec, + template(omit) FeatureCaps p_featureCaps := omit, + template(omit) ContentType p_contentType := omit, + template(omit) MessageBody p_mb := omit + + ) modifies m_REGISTER_Request_expires_IMS := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := p_contentType, + expires := m_expires(str2int(valueof(p_deltaSec))), + featureCaps := p_featureCaps + }, + messageBody := p_mb + } + + + + template(value) REGISTER_Request m_REGISTER_Request_AS( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Contact p_contact := omit, + template(omit) Authorization p_authorization := omit, + template(value) DeltaSec p_deltaSec, + template(omit) ContentType p_contentType := omit, + template(omit) MessageBody p_mb := omit + ) modifies m_REGISTER_Request_Base := { + requestLine := { + method := REGISTER_E, + requestUri := p_requestUri + }, + msgHeader := { + authorization := p_authorization, + callId := p_callId, + contact := p_contact, + cSeq := p_cSeq, + fromField := p_from, + pChargingVector := m_pChargingVector_icid_TS, + pVisitedNetworkID := m_pVisitedNetworkID_TS, + toField := p_to, + via := p_via, + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := p_contentType, + expires := m_expires(str2int(valueof(p_deltaSec))) + }, + messageBody := p_mb + } + + template (omit) REFER_Request m_sccas_refer_wo_contact( + in template(value) SipUrl p_requestUri, + in template(value) CallId p_callId, + in template(value) CSeq p_cSeq, + in template(value) LibSip_SIPTypesAndValues.Contact p_contact, + in template(value) From p_from, + in template(value) To p_to, + in template(value) LibSip_SIPTypesAndValues.Via p_via, + // in template(value) LibSip_SIPTypesAndValues.Contact p_contact, + in template(value) ReferTo p_referTo , + in template(omit) ReferredBy p_referredBy := omit, + in template(omit) Require p_require := omit, + in template(omit) Route p_route := omit, + in template(omit) RecordRoute p_recordRoute := omit, + in template(omit) Supported p_supported := omit, + in template(omit) PChargingVector p_pChargingVector := omit, + in template(value) MessageBody p_mb + ) modifies m_REFER_Request_IMS/*m_REFER_Request_UE*/ := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := m_contentType(c_sdpApplication) + }, + messageBody := p_mb + } + template (omit) BYE_Request m_sccas_bye_reason( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Route p_route := omit, + in template (value) Reason p_reason := m_Reason(503) + ) modifies m_BYE_Request_UE := { + msgHeader := { + reason := p_reason + } + } + + template (omit) BYE_Request m_sccas_bye_targetDialog( + in template (value) SipUrl p_requestUri, + in template (value) CallId p_callId, + in template (value) CSeq p_cSeq, + in template (value) From p_from, + in template (value) To p_to, + in template (value) LibSip_SIPTypesAndValues.Via p_via, + in template (omit) Route p_route := omit, + in template (omit) Require p_require := m_require({"tdialog"}), + in template (value) TargetDialog p_targetDialog := m_targetDialog("CallidString"), + in template (omit) PAssertedID p_pAssertedID := omit,//m_PAssertedID(m_AddrUnion_NameAddr(m_NameAddr(,))), + in template (value) Reason p_reason := m_Reason(503) + ) modifies m_BYE_Request_UE := { + msgHeader := { + require := p_require, + targetDialog := p_targetDialog, + pAssertedID := p_pAssertedID, + reason := p_reason + } + } + + group response_sent{ + template(value) Response m_Response_18XonINVITE_AS_Featurecaps( + template(value) StatusLine_18x p_statusLine, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Contact p_contact := omit, + template(omit) FeatureCaps p_featureCaps := omit + + ) modifies m_Response_18x_Base := { + msgHeader := { + contact := p_contact, // mandatory field due to 24 229 rel 7.9 + featureCaps := p_featureCaps + } + } + + } //End of group response + } + + group request_sent_Yann { + + template(value) REFER_Request m_sccas_refer( + in template(value) SipUrl p_requestUri, + in template(value) CallId p_callId, + in template(value) CSeq p_cSeq, + in template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit, + in template(value) From p_from, + in template(value) To p_to, + in template(value) Via p_via, + in template(value) ReferTo p_referTo, + in template(omit) ReferredBy p_referredBy := omit, + in template(omit) Require p_require := omit, + in template(omit) Route p_route := omit, + in template(omit) RecordRoute p_recordRoute := omit, + in template(omit) Supported p_supported := omit, + in template(omit) PChargingVector p_pChargingVector := omit, + in template(value) MessageBody p_mb, + in template(value) ReferSub p_referSub + ) modifies m_REFER_Request_IMS := { + msgHeader := { + referSub := p_referSub + } + } + + } + + template (omit) INVITE_Request m_sccas_invite( + in template (value) SipUrl p_requestUri, + in template (value) CallId p_callId, + in template (value) CSeq p_cSeq, + in template (value) From p_from, + in template (value) To p_to, + in template (value) LibSip_SIPTypesAndValues.Via p_via, + in template (value) LibSip_SIPTypesAndValues.Contact p_contact, + in template (omit) Require p_require := omit, + in template (omit) Route p_route := omit, + in template (omit) Supported p_supported := omit, + in template (value) MessageBody p_mb, + in template (omit) Accept p_accept := omit + ) modifies m_INVITE_Request_UE := { + msgHeader := { + accept := p_accept, + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := m_contentType(c_sdpApplication) + }, + messageBody := p_mb + } + + } // End of group request_sent + + group request_receive { + + template (present) REGISTER_Request mw_sccas_register( + template (present) Path p_Path := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PVisitedNetworkID p_pVisitedNetworkID := ?, + template (present) LibSip_SIPTypesAndValues.Contact p_contact := mw_sccas_contact, + template (present) Authorization p_authorization := mw_Authorization_digest, + template (present) Expires p_expires := ?, + template (present) Supported p_supported := ?, + template (present) Require p_require := ?, + template (present) PAccessNetworkInfo p_pPAccessNetworkInfo := ?, + template ContentType p_contentType := *, + template MessageBody p_mb := * + ) modifies mw_REGISTER_Request_IMS := { + msgHeader := { + contact := p_contact, + contentType := p_contentType, + authorization := p_authorization, + expires := p_expires, + supported := p_supported, + pAccessNetworkInfo := p_pPAccessNetworkInfo + }, + messageBody := p_mb + } // End of template mw_sccas_register + + template (present) MESSAGE_Request mw_sccas_MESSAGE_Request( + template (present) SipUrl p_requestUri := ?, + template (present) CallId p_callId := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PAssertedID p_pAssertedID := ?, + template ContentType p_contentType := *, + template MessageBody p_mb := * + ) modifies mw_MESSAGE_Request_Base := { + requestLine := { + requestUri := p_requestUri + }, + msgHeader := { + callId := p_callId, + contentType := p_contentType, + pChargingVector := p_pChargingVector, + pAssertedID := p_pAssertedID + }, + messageBody := p_mb + } // End of template mw_sccas_MESSAGE_Request + + template (present) Response mw_sccas_Response_2xxonREGISTER( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Via p_via := ?, + template (present) Contact p_contact := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PAssertedID p_pAssertedID := ?, + template AcceptContact p_acceptContact := * + ) modifies mw_Response_2xx_Base := { + msgHeader := { + pChargingVector := p_pChargingVector, + contact := p_contact, + acceptContact := p_acceptContact + } + } // End of template mw_sccas_Response_2xxonREGISTER + + + group request_receive_Axel { + + template(present) INVITE_Request mw_INVITE_Request_contact( + template Contact p_contact + ) modifies mw_INVITE_Request_Base := { + msgHeader := {contact := p_contact} + } + + } + + group request_receive_Steffen { + + + template(present) Response mw_Response_1xx_SDPMessage( + template CallId p_callId, + template CSeq p_cSeq, + template PEarlyMedia p_PEarlyMedia, + template ContentType p_contentType, + template SDP_Message p_sdpMessageBody + ) modifies mw_Response_1xx_Base := { + statusLine := mw_statusLine1xx, + msgHeader := { + callId := p_callId, + contentLength := *, + cSeq := p_cSeq, + fromField := ?, + maxForwards := *, + toField := ?, + via := ?, + pEarlyMedia := p_PEarlyMedia, + contentType := p_contentType + }, + messageBody := { + sdpMessageBody := p_sdpMessageBody + } + } + + template(present) REFER_Request mw_REFER_Request_stl( + template CallId p_callId := ?, + template SipUrl p_requestUri, + template SipUrl p_referredBy, + template(present) SDP_Message p_sdpMessageBody + ) modifies mw_REFER_Request_Base := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + referredBy := { + fieldName := REFERRED_BY_E, + nameAddr := mw_NameAddr(*, p_referredBy), // STF471 + // {displayName + // := + // *, + // addrSpec + // := + // p_referredBy}, + referredbyIdParams := * + }, + pAssertedID := ?, + referSub := + { + referSubValue := false + }, + contentType := + { + mTypeSubtype := "application/sdp" + }, + referTo := ?, + require := + { + fieldName := REQUIRE_E, optionsTags := {"tdilog"} + + } + }, + messageBody := { + sdpMessageBody := p_sdpMessageBody + } + } + + + + template LibSip_SIPTypesAndValues.ContentType mw_contentType_appclication_sdp := { + fieldName := CONTENT_TYPE_E, + mTypeSubtype := "appclication/sdp", + mParams := * + } + + + template LibSip_SDPTypes.SDP_Message mw_sdpmessageBody := { + protocol_version := ?, + origin := ?, + session_name := ?, + information := *, + uri := *, + emails := *, + phone_numbers := *, + connection := *, + bandwidth := *, + times := ?, + timezone_adjustments := ?, + key := ?, + attributes := ?, + media_list := { + { + media_field := ?, + information := *, + connections := *, + bandwidth := *, + key := *, + attributes := * + } + } + } + + + + template(present) UPDATE_Request mw_UPDATE_Request_ContactChange( + template CallId p_callId, + template(present) Contact p_contact := ?, + template(present) ContentType p_contenType := ?, + template(present) SDP_Message p_sdpMessageBody := ? + ) modifies mw_UPDATE_Request_Base := { + msgHeader := { + callId := p_callId, + contact := p_contact, + contentType := p_contenType + }, + messageBody := { + sdpMessageBody := p_sdpMessageBody + } + } + + + template LibSip_SIPTypesAndValues.Contact mw_contact_g3gppMidcallFeature := { + fieldName := ?, contactBody := ? // TODO: correct use of g3gppMidcallFeatureCapabilityIndicator + } + + template LibSip_SIPTypesAndValues.Contact mw_contact_sourceLegAtCreation := { + fieldName := ?, contactBody := ? // TODO: "set to the Contact header field provided on the source leg at the creation of the dialog", + } + + template LibSip_SIPTypesAndValues.Contact mw_contact_g3gppDrvccAlertingFeature := { + fieldName := ?, contactBody := ? // TODO: correct use of g3gppDrvccAlertingFeature + } + + + + template (present) Response mw_sccas_Response_2xxmediaOnly( + //template (present) StatusLine.statusCode p_statusCode := 200, + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Via p_via := ?, + template (present) Contact p_contact := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PAssertedID p_pAssertedID := ?, + template AcceptContact p_acceptContact := * + ) modifies mw_Response_2xx_Base := { + // statusLine := mw_statusLine(p_statusCode, ?), + messageBody := + { + sdpMessageBody := + { + protocol_version := ?, + origin := ?, + session_name := ?, + information := *, + uri := *, + emails := *, + phone_numbers := *, + connection := *, + bandwidth := *, + times := ?, + timezone_adjustments := *, + key := *, + attributes := *, + media_list := ? // TODO: media only && Version 0 + } + } + } + + template (present) Response mw_sccas_Response_200mediaOnly( + template (present) StatusLine.statusCode p_statusCode := 200, + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Via p_via := ?, + template (present) Contact p_contact := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PAssertedID p_pAssertedID := ?, + template AcceptContact p_acceptContact := * + ) modifies mw_Response_StatusCode_Base := { + + statusLine := mw_statusLine(p_statusCode, ?), + messageBody := + { + sdpMessageBody := + { + protocol_version := ?, + origin := ?, + session_name := ?, + information := *, + uri := *, + emails := *, + phone_numbers := *, + connection := *, + bandwidth := *, + times := ?, + timezone_adjustments := *, + key := *, + attributes := *, + media_list := ? // TODO: media only && Version 0 + } + } + + } + } + + group request_receive_Bostjan { + } + + group request_receive_Iztok { + template (present) Response mw_Response_2xxonREGISTER_AS( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Via p_via := ?, + template (present) Contact p_contact := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PAssertedID p_pAssertedID := ?, + template AcceptContact p_acceptContact := * + ) modifies mw_Response_2xx_Base := { + msgHeader := { + pChargingVector := p_pChargingVector, + contact := p_contact, + acceptContact := p_acceptContact + }} + + + template (present) INVITE_Request mw_INVITE_Request_AS( + template (present) SipUrl p_requestUri := ?, + template (present) CallId p_callId := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PAssertedID p_pAssertedID := ?, + template ContentType p_contentType := *, + template MessageBody p_mb := * + ) modifies mw_INVITE_Request_Base := { + requestLine := { + requestUri := p_requestUri + }, + msgHeader := { + callId := p_callId, + contentType := p_contentType, + pChargingVector := p_pChargingVector, + pAssertedID := p_pAssertedID + }, + messageBody := p_mb + } // End of template mw_sccas_MESSAGE_Request + + group response{ + template(present) Response mw_Response_PCV_FeatureCaps( + template(present) StatusLine.statusCode p_statusCode := ?, + template CallId p_callId, + template CSeq p_cSeq, + template(present) PChargingVector p_chargingVector := ?, + template FeatureCaps p_featureCaps := * + ) modifies mw_Response_StatusCode_Base := { + msgHeader := { + pChargingVector := p_chargingVector, + featureCaps := p_featureCaps, + accept := mw_accept({{"application/vnd.3gpp.state-and-event-info.xml", *}}), + recvInfo := mw_recvinfo({{"g3gppStateAndEventPackageName", *}}) + } + } + } + } + group request_receive_Yann { + + template(value) ContentType m_contentType_sccas( + in template (value) charstring p_mTypeSubtype, + in template (omit) SemicolonParam_List p_mParams := omit + ) modifies m_contentType := { + fieldName := CONTENT_TYPE_E, + mTypeSubtype := p_mTypeSubtype, + mParams := omit + } + + // NOTE STF471: removed statusline parameter as it is a fixed 401 status code + template(present) Response mw_Response_403Forbidden( + template CallId p_callId, + template CSeq p_cSeq + ) modifies mw_Response_4xx_Base := { + statusLine := { + sipVersion := c_sipNameVersion, + statusCode := 403, + reasonPhrase := ? + } + } + } + + template (present) Response mw_sccas_Response_2xxonINVITE( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Via p_via := ?, + template (present) Contact p_contact := ?, + template (present) PChargingVector p_pChargingVector := ?, + template (present) PAssertedID p_pAssertedID := ?, + template AcceptContact p_acceptContact := * + ) modifies mw_Response_2xx_Base := { + msgHeader := { + pChargingVector := p_pChargingVector, + contact := p_contact, + acceptContact := p_acceptContact + } + } // End of template mw_sccas_Response_2xxonINVITE + + } // End of group request_receive + + } // End of group modified_templates + + } // End ofend group MessageTemplates + +} // End of module AtsSccas_Templates \ No newline at end of file diff --git a/ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn b/ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..6b3848c2575fdf10d5d75dcc8484e9ce37594b18 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn @@ -0,0 +1,305 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides test component configurations for SCCAS tests. + */ + +module AtsSccas_TestConfiguration +{ + //LibCommon + import from LibCommon_Sync all ; + import from LibCommon_VerdictControl all; + //LibSip + import from LibSip_Interface all; + import from LibSip_SIPTypesAndValues all; + import from LibSip_PIXITS all; + //LibIms + import from LibIms_SIPTypesAndValues all; + import from LibIms_Interface all; + //AtsIms + import from AtsSccas_TestSystem all; + import from AtsSccas_PIXITS all; + +group auxSipFunction { + + /* + ** @desc f_IncCSeq returns an input parameter incremented by 1000 + ** reason is to run the next testcase with a higher CSeq value + */ + function f_IncCSeq(inout CSeq loc_CSeq) { + loc_CSeq.seqNumber := loc_CSeq.seqNumber + 1000; + return + }; + // end f_IncCSeq + +}//end group auxSipFunction + + group cfUp { + + + /** + * + * @desc Creates test configuration of CF_1Isc + * @param p_imsComponent_ims - ims component + */ + function f_cf_1IscUp(out ImsComponent p_imsComponent_ueims) + runs on ServerSyncComp + { + //Variables + var FncRetCode v_ret := e_success; + + //Create + p_imsComponent_ueims := ImsComponent.create("UEIMS") ; + + //Connect + connect(p_imsComponent_ueims:syncPort, self:syncPort) ; + + //Map + map(p_imsComponent_ueims:SIPP, system:UEIMS);// Init test Configuration + + f_setVerdict(v_ret); + }//end f_cf_1IscUp + + /** + * + * @desc Creates test configuration of CF_1Isc1AtcfUp + * @param p_imsComponent_ueims - ueims component + * @param p_imsComponent_atcf - atcf component + */ + function f_cf_1Isc1AtcfUp(out ImsComponent p_imsComponent_ueims, + out ImsComponent p_imsComponent_atcf) + runs on ServerSyncComp + { + //Variables + var FncRetCode v_ret := e_success; + + //Create + p_imsComponent_ueims := ImsComponent.create("UEIMS") ; + p_imsComponent_atcf := ImsComponent.create("ATCF") ; + + //Connect + connect(p_imsComponent_ueims:syncPort, self:syncPort) ; + connect(p_imsComponent_atcf:syncPort, self:syncPort) ; + //Map + map(p_imsComponent_ueims:SIPP, system:UEIMS);// Init test Configuration + map(p_imsComponent_atcf:SIPP, system:ATCF);// Init test Configuration + + f_setVerdict(v_ret); + }//end f_cf_1Isc1AtcfUp + + /** + * + * @desc Creates test configuration of CF_1Isc1MscfUp + * @param p_imsComponent_ueims - ueims component + * @param p_imsComponent_msc - msc component + */ + function f_cf_1Isc1MscUp(out ImsComponent p_imsComponent_ueims, + out ImsComponent p_imsComponent_msc) + runs on ServerSyncComp + { + //Variables + var FncRetCode v_ret := e_success; + + //Create + p_imsComponent_ueims := ImsComponent.create("UEIMS") ; + p_imsComponent_msc := ImsComponent.create("MSC") ; + + //Connect + connect(p_imsComponent_ueims:syncPort, self:syncPort) ; + connect(p_imsComponent_msc:syncPort, self:syncPort) ; + //Map + map(p_imsComponent_ueims:SIPP, system:UEIMS);// Init test Configuration + map(p_imsComponent_msc:SIPP, system:MSC);// Init test Configuration + + f_setVerdict(v_ret); + }//end f_cf_1Isc1MscUp + + /** + * + * @desc Creates test configuration of CF_1Gm1SccasUp + * @param p_imsComponent_ue - ue component + * @param p_imsComponent_sccas - sccas component + */ + function f_cf_1Gm1SccasUp(out ImsComponent p_imsComponent_ue, + out ImsComponent p_imsComponent_sccas) + runs on ServerSyncComp + { + //Variables + var FncRetCode v_ret := e_success; + + //Create + p_imsComponent_ue := ImsComponent.create("UE") ; + p_imsComponent_sccas := ImsComponent.create("SCCAS") ; + + //Connect + connect(p_imsComponent_ue:syncPort, self:syncPort) ; + connect(p_imsComponent_sccas:syncPort, self:syncPort) ; + //Map + map(p_imsComponent_ue:SIPP, system:UE);// Init test Configuration + map(p_imsComponent_sccas:SIPP, system:SCCAS);// Init test Configuration + + f_setVerdict(v_ret); + }//end f_cf_1Gm1SccasfUp + + }//end group cfUp + + group cfDown { + + /** + * + * @desc Deletes configuration of CF_1Isc + * @param p_imsComponent_ueims ueims component + */ + function f_cf_1IscDown(in ImsComponent p_imsComponent_ueims) + runs on ServerSyncComp + { + f_serverWaitForAllClientsToStop(); + + //Disconnect + disconnect(p_imsComponent_ueims:syncPort, self:syncPort) ; + //Unmap + unmap(p_imsComponent_ueims:SIPP, system:UEIMS); + }//end f_cf_1IscDown + + /** + * + * @desc Deletes configuration of CF_1Isc1Atcf + * @param p_imsComponent_ueims - ueims component + * @param p_imsComponent_atcf - atcf component + */ + function f_cf_1Isc1AtcfDown(in ImsComponent p_imsComponent_ueims, + in ImsComponent p_imsComponent_atcf) + runs on ServerSyncComp + { + f_serverWaitForAllClientsToStop(); + + //Disconnect + disconnect(p_imsComponent_ueims:syncPort, self:syncPort); + disconnect(p_imsComponent_atcf:syncPort, self:syncPort); + //Unmap + unmap(p_imsComponent_ueims:SIPP, system:UEIMS); + unmap(p_imsComponent_atcf:SIPP, system:ATCF); + }//end f_cf_1Isc1AtcfDown + + /** + * + * @desc Deletes configuration of CF_1Isc1Msc + * @param p_imsComponent_ueims - ueims component + * @param p_imsComponent_msc - msc component + */ + function f_cf_1Isc1MscDown(in ImsComponent p_imsComponent_ueims, + in ImsComponent p_imsComponent_msc) + runs on ServerSyncComp + { + f_serverWaitForAllClientsToStop(); + + //Disconnect + disconnect(p_imsComponent_ueims:syncPort, self:syncPort); + disconnect(p_imsComponent_msc:syncPort, self:syncPort); + //Unmap + unmap(p_imsComponent_ueims:SIPP, system:UEIMS); + unmap(p_imsComponent_msc:SIPP, system:MSC); + }//end f_cf_1Isc1MscDown + + /** + * + * @desc Deletes configuration of CF_1Isc1Msc + * @param p_imsComponent_ueims - ueims component + * @param p_imsComponent_msc - msc component + */ + function f_cf_1Gm1SccasDown(in ImsComponent p_imsComponent_ue, + in ImsComponent p_imsComponent_sccas) + runs on ServerSyncComp + { + f_serverWaitForAllClientsToStop(); + + //Disconnect + disconnect(p_imsComponent_ue:syncPort, self:syncPort); + disconnect(p_imsComponent_sccas:syncPort, self:syncPort); + //Unmap + unmap(p_imsComponent_ue:SIPP, system:UE); + unmap(p_imsComponent_sccas:SIPP, system:SCCAS); + }//end f_cf_1Gm1SccasDown + + + } //end group cfDown + + group syncNoStop // Same functions as in LibCommon but without call of f_serverWaitForAllClientsToStop() + { + /* @desc Implements synchronization of client from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to client. + * Waits for PX_TSYNC_TIME_LIMIT to let client + * finish executing behavior until this + * synchronization point. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @param p_syncPointIds list of synchronization point name/ids + * @return execution status + */ + function f_serverSync1Client( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + var integer i, v_noOfSyncIds := sizeof(p_syncPointIds); + for ( i := 0; i < v_noOfSyncIds; i := i+1 ) { + f_serverSyncClientsTimed(1,p_syncPointIds[i], PX_TSYNC_TIME_LIMIT); + } + } + + /* @desc Implements synchronization of 2 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @param p_syncPointIds list of synchronization point name/ids + * @return execution status + */ + function f_serverSync2Clients( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + var integer i, v_noOfSyncIds := sizeof(p_syncPointIds); + for ( i := 0; i < v_noOfSyncIds; i := i+1 ) { + f_serverSyncClientsTimed(2,p_syncPointIds[i], PX_TSYNC_TIME_LIMIT); + } + } + + /* @desc Implements synchronization of 3 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @param p_syncPointIds list of synchronization point name/ids + * @return execution status + */ + function f_serverSync3Clients( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + var integer i, v_noOfSyncIds := sizeof(p_syncPointIds); + for ( i := 0; i < v_noOfSyncIds; i := i+1 ) { + f_serverSyncClientsTimed(3,p_syncPointIds[i], PX_TSYNC_TIME_LIMIT); + } + } + + /* @desc Implements synchronization of 4 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @param p_syncPointIds list of synchronization point name/ids + * @return execution status + */ + function f_serverSync4Clients( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + var integer i, v_noOfSyncIds := sizeof(p_syncPointIds); + for ( i := 0; i < v_noOfSyncIds; i := i+1 ) { + f_serverSyncClientsTimed(4,p_syncPointIds[i], PX_TSYNC_TIME_LIMIT); + } + } + } //end group syncNoStop +} // end module AtsSccas_TestConfiguration diff --git a/ttcn/AtsSccas/AtsSccas_TestControl.ttcn b/ttcn/AtsSccas/AtsSccas_TestControl.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..32b096b7533cde7ce1e9b09401f1d1a4496ff81e --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_TestControl.ttcn @@ -0,0 +1,59 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides the Test Cases for SCCAS. + */ + +module AtsSccas_TestControl +{ + // LibSip + import from LibSip_SIPTypesAndValues all; + + // AtsSccas + import from AtsSccas_Testcases all; + import from AtsSccas_Testcases_TS124292 all; + import from AtsSccas_PICS all; + + control { + var CSeq v_cSeq := { + fieldName := CSEQ_E, + seqNumber := 1, + method := "INVITE" + } + + if (PICS_SCCAS_IUT == true) { + execute(TC_ISC_SCCAS_RSC_REG_01(v_cSeq)); + execute(TC_ISC_SCCAS_RSC_REG_02(v_cSeq)); + execute(TC_ISC_SCCAS_RSC_REG_03(v_cSeq)); + execute(TC_ISC_SCCAS_RSC_REG_04(v_cSeq)); + execute(TC_ISC_SCCAS_RSC_REG_05(v_cSeq)); + execute(TC_ISC_SCCAS_RSC_REG_06(v_cSeq)); + + execute(TC_ISC_SCCAS_GEN_INV_01(v_cSeq)); + + execute(TC_ISC_SCCAS_CON_RIN_01(v_cSeq)); + execute(TC_ISC_SCCAS_CON_RIN_02(v_cSeq)); + execute(TC_ISC_SCCAS_CON_RIN_03(v_cSeq)); + + execute(TC_ISC_SCCAS_PCT_INV_06(v_cSeq)); + execute(TC_ISC_SCCAS_PCT_INV_02(v_cSeq)); + + execute(TC_ISC_SCCAS_CPT_INV_07(v_cSeq)); + execute(TC_ISC_SCCAS_CPT_INV_08(v_cSeq)); + execute(TC_ISC_SCCAS_CPT_INV_09(v_cSeq)); + execute(TC_ISC_SCCAS_CPT_INV_10(v_cSeq)); + execute(TC_ISC_SCCAS_CPT_INV_11(v_cSeq)); + execute(TC_ISC_SCCAS_CPT_INV_12(v_cSeq)); + execute(TC_ISC_SCCAS_CPT_INV_13(v_cSeq)); + execute(TC_ISC_SCCAS_CPT_INV_14(v_cSeq)); + + execute(TC_ISC_SCCAS_TER_BYE_01(v_cSeq)); + } + + if (PICS_MSC_IUT == true) { + execute(TC_ISC_SCCAS_MSC_REG_01(v_cSeq)); + execute(TC_ISC_SCCAS_MSC_REG_02(v_cSeq)); + } + } + +} // End of module AtsSccas_TestControl diff --git a/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn b/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..48641746229ce177191cb9f54f1977a58b6bea61 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn @@ -0,0 +1,60 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides test system types used by the test component + * for SCCAS tests. + */ + +module AtsSccas_TestSystem +{ + //LibCommon + import from LibCommon_Sync all; + import from LibCommon_AbstractData all; + import from LibCommon_BasicTypesAndValues 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_PIXITS all; + import from LibSip_Interface all; + //AtsIms + //import from AtsSccas_PIXITS all; + + group CMTypes { + type charstring CM_Message; + } // end group CMTypes + + /*group Signatures { + signature s_SIP_conversation (in charstring text, out boolean answer); + signature s_SIP_ringing (in charstring text, out boolean answer); + }*/ // end group Signatures + + group SystemConfiguration { + group Ports { + + /*type port operatorPort_SIP procedure { + inout s_SIP_conversation; + inout s_SIP_ringing};*/ + + type port Coordination message { + inout CM_Message} with {extension "internal"}; + } // End Group Ports + + group TestComponents { + group TestSystemInterfaces { + /* + ** @desc The test system interface + */ + type component TestAdapter { + port SipPort UEIMS, SCCAS, ATCF, MSC, UE1; + //port operatorPort_SIP opPortS; + port OperatorPort opPortS; + } + } // end Group TestSystemInterfaces + + + } //end group TestComponents + } //end group SystemConfiguration + +} // end module AtsSccas_TestSystem diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..e4815e31d27471a74bf0f16b4db3957499267b34 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -0,0 +1,2109 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides the Test Cases for SCCAS. + */ + +module AtsSccas_Testcases +{ + //LibCommon + import from LibCommon_Sync all ; + import from LibCommon_VerdictControl all; + //LibSip + import from LibSip_Interface all; + import from LibSip_SIPTypesAndValues all; + //LibIms + import from LibIms_SIPTypesAndValues all; + import from LibIms_Interface all; + //AtsIms + import from AtsSccas_TestConfiguration all; + import from AtsSccas_TestSystem all; + import from AtsSccas_TCFunctions all; + import from AtsSccas_PICS 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 Transaction Id + */ + testcase TC_ISC_SCCAS_RSC_REG_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_RSC_REG_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_RSC_REG_01 + + /* + * @desc Verify that the SCCAS successfully obtain/processes de-registration information (Expires=0) + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_RSC_REG_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_RSC_REG_02(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_RSC_REG_03(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_RSC_REG_03(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_RSC_REG_04(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + var ImsComponent v_imsComponent_atcf; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_SRVCC_ATCF) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_SRVCC_ATCF' shall be set to true for executing the TC. ***"); + stop; + } + + f_cf_1Isc1AtcfUp(v_imsComponent_ueims, v_imsComponent_atcf); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_RSC_REG_04_ueims(p_cSeq_s)); + f_IncCSeq(p_cSeq_s); v_imsComponent_atcf.start(f_TC_ISC_SCCAS_RSC_REG_04_atcf(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync2Clients({c_prDone, c_tbDone, c_poDone}); + + f_cf_1Isc1AtcfDown(v_imsComponent_ueims, v_imsComponent_atcf); + + } // End of TC_ISC_SCCAS_RSC_REG_04 + + } // 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 Transaction Id + */ + testcase TC_ISC_SCCAS_RSC_REG_05(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + var ImsComponent v_imsComponent_msc; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_SRVCC_MSC) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_SRVCC_MSC' shall be set to true for executing the TC. ***"); + stop; + } + + f_cf_1Isc1AtcfUp(v_imsComponent_ueims, v_imsComponent_msc); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_RSC_REG_05_ueims(p_cSeq_s)); + f_IncCSeq(p_cSeq_s); v_imsComponent_msc.start(f_TC_ISC_SCCAS_RSC_REG_05_msc(p_cSeq_s)); // TODO Not considered in TP? + + // synchronize both PTCs on 3 sychronization points + f_serverSync2Clients({c_prDone, c_tbDone, c_poDone}); + + f_cf_1Isc1AtcfDown(v_imsComponent_ueims, v_imsComponent_msc); + + } // End of TC_ISC_SCCAS_RSC_REG_05 + + } // 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 Transaction Id + */ + testcase TC_ISC_SCCAS_RSC_REG_06(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + var ImsComponent v_imsComponent_msc; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + f_cf_1Isc1AtcfUp(v_imsComponent_ueims, v_imsComponent_msc); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_RSC_REG_06_ueims(p_cSeq_s)); + f_IncCSeq(p_cSeq_s); v_imsComponent_msc.start(f_TC_ISC_SCCAS_RSC_REG_06_msc(p_cSeq_s)); // TODO Not considered in TP? + + // synchronize both PTCs on 3 sychronization points + f_serverSync2Clients({c_prDone, c_tbDone, c_poDone}); + + f_cf_1Isc1AtcfDown(v_imsComponent_ueims, v_imsComponent_msc); + + } // End of TC_ISC_SCCAS_RSC_REG_06 + + } // 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 Transaction Id + */ + testcase TC_ISC_SCCAS_GEN_INV_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_GEN_INV_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_GEN_INV_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_GEN_INV_02(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_GEN_INV_02 + + } // End of group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE + + group TP_6A_4_3A_SIP_INVITE_responses_towards_the_MSC_server { + + /* + * @desc Verify that the SCCAS sends 1xx and/or 2xx response to the SIP INVITE request due to STN-SR or STN + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_GEN_INV_03(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_GEN_INV_03(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_GEN_INV_03 + + } // End of group TP_6A_4_3A_SIP_INVITE_responses_towards_the_MSC_server + + 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 Transaction Id + */ + testcase TC_ISC_SCCAS_GEN_RIN_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_GEN_RIN_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_GEN_RIN_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_GEN_RIN_02(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_GEN_RIN_02 + + } //End of group TP_6A_4_5_Target_refresh_request_for_a_dialog_and_associated_responses { + group TP_6A_4_6_Rejecting_malicious_SIP_REFER_requests_from_remote_UE { + + /** + * @desc Verify that the SCCAS sends 403 response to the SIP REFER request from remote UE. + * @param p_cSeq_s Random CSeq INVITE number + */ + testcase TC_ISC_SCCAS_GEN_REF_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_GEN_REF_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_GEN_REF_01 + + } // End of group TP_6A_4_6_Rejecting_malicious_SIP_REFER_requests_from_remote_UE + group TP_6A_4_7_Protecting_from_malicious_SIP_INFO_requests_with_remote_leg_information_from_remote_UE { + + /** + * @desc Verify that the SCCAS not include Accept,RecvInfo towards remote UE. + * @param p_cSeq_s Random CSeq INVITE number + */ + testcase TC_ISC_SCCAS_GEN_INF_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_GEN_INF_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_GEN_REF_01 + + } // End of group TP_6A_4_7_Protecting_from_malicious_SIP_INFO_requests_with_remote_leg_information_from_remote_UE + } // 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 Transaction Id + */ + testcase TP_ISC_SCCAS_ORI_INV_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_ORI_INV_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TP_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 Transaction Id + */ + testcase TP_ISC_SCCAS_ORI_INV_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_ORI_INV_02(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TP_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 Verify that the SCCAS last receives SIP INVITE request from UE/SCSCF + * @param p_cSeq_s Transaction Id + */ + testcase TP_ISC_SCCAS_TER_INV_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_TER_INV_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TP_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 { + + /* + * @desc Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg) with dynamic STI. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + + // f_Registration_IMS + + f_cf_1IscUp(v_imsComponent_ueims); + + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_01(p_cSeq_s)); + + + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_CPT_INV_01 + + /* + * @desc Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg) with static STI. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + + // f_Registration_IMS + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_02(p_cSeq_s)); + + + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_CPT_INV_02 + + + /* + * @desc Verify that the P-CSCF successfully processes an re-INVITE (Originating Leg) + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_RIN_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + + + // f_Registration_IMS + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_RIN_01(p_cSeq_s)); + + + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_CPT_RIN_01 + + + /* + * @desc Verify that the P-CSCF successfully processes an ACK and release the source access leg. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_ACK_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + + // f_Registration_IMS + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_ACK_01(p_cSeq_s)); + + + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_CPT_ACK_01 + + + /* + * @desc Verify that the SCC AS Conditions for selecting a sessions in an early dialog phase + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_03(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_03(p_cSeq_s)); + + + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_CPT_INV_03 + + /* + * @desc Verify that the SCC AS accepts conditions in an early dialog phase + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_04(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG' shall be set to true for executing the TC. ***"); + stop; + } + + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // TODO: SCC AS supports the MSC Server g.3gpp.drvcc-alerting feature + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_04(p_cSeq_s)); + + + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_CPT_INV_04 + + + testcase TC_ISC_SCCAS_PCT_UPD_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG' shall be set to true for executing the TC. ***"); + stop; + } + + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PCT_UPD_01(p_cSeq_s)); + + + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TP_ISC_SCCAS_PCT_UPD_01 + + testcase TP_ISC_SCCAS_PCT_RES_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PCT_RES_02(p_cSeq_s)); + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_PCT_UPD_01 + + + /* + * @desc Verify that the SCC AS send a SIP UPDATE request towards the remote UE after receiving a SIP INVITE request due to PS to CS STN in early dialog phase supporting a session with active speech media component such + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_PCT_INV_05(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG' shall be set to true for executing the TC. ***"); + stop; + } + + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PCT_INV_05(p_cSeq_s)); + + + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_PCT_INV_05 + + testcase TC_ISC_SCCAS_PCT_REF_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_REJECTION_OF_MALICIOUS_REFER) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_REJECTION_OF_MALICIOUS_REFER' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PCT_REF_01(p_cSeq_s)); + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_PCT_REF_01 + + + /* + * @desc Verify that the SCC AS terminates the call over CS after receiving a SIP 488 + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_PCT_REF_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // TODO: SIP INVITE was sent with: + // creating the session in the terminating alerting phase without an SDP MIME body + // SCC AS supports PS to CS dual radio access + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PCT_REF_02(p_cSeq_s)); + + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_PCT_REF_02 + + testcase TC_ISC_SCCAS_PCT_RES_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PCT_RES_01(p_cSeq_s)); + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_PCT_RES_01 + + + testcase TC_ISC_SCCAS_MED_BYE_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_MED_BYE_01(p_cSeq_s)); + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_MED_BYE_01 + + testcase TC_ISC_SCCAS_MED_RES_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_ISC_SCCAS_MED_RES_01(p_cSeq_s)); + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_MED_RES_01 + + testcase TC_ISC_SCCAS_MED_RIN_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_MED_RIN_01(p_cSeq_s)); + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_MED_RIN_01 + + + /* + * @desc Verify that the SCC AS performs the procedures correctly for CS to PS dual radio access transfer for originating calls in pre-alerting phase or in alerting phase on the originating side + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_05(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // the SCC AS supports CS to PS dual radio access transfer for originating calls in pre-alerting phase + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // TODO: SCC AS supports the MSC Server g.3gpp.drvcc-alerting feature + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_05(p_cSeq_s)); + + + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_CPT_INV_05 + + + /* + * @desc Verify that SCC AS correctly recognizes and initiated for CS to PS dual radio access transfer for a call in the alerting phase on the terminating side + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_06(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // TODO: SCC AS supports the MSC Server g.3gpp.drvcc-alerting feature + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_06(p_cSeq_s)); + + + + // synchronize PTC on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_CPT_INV_06 + + +// testcase TC_ISC_SCCAS_PCT_INV_05(inout CSeq p_cSeq_s) +// runs on ServerSyncComp +// system TestAdapter { +// +// var ImsComponent v_imsComponent_ueims; +// +// // Test control +// if (not PICS_SCCAS_IUT) { +// log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); +// stop; +// } +// +// +// // Test component configuration +// f_cf_1IscUp(v_imsComponent_ueims); +// +// // TODO: SCC AS supports the MSC Server g.3gpp.drvcc-alerting feature +// +// +// f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PCT_INV_05(p_cSeq_s)); +// +// +// +// // synchronize PTC on 3 sychronization points +// f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); +// +// f_cf_1IscDown(v_imsComponent_ueims); +// +// } // End of TC_ISC_SCCAS_PCT_INV_05 + + } // 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 Transaction Id + */ + testcase TC_ISC_SCCAS_PPT_RIN_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2PS_ACCES_TRANSFER) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2PS_ACCES_TRANSFER' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PPT_RIN_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_PPT_RIN_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2PS_ACCES_TRANSFER) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2PS_ACCES_TRANSFER' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PPT_RIN_02(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_PPT_RIN_03(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2PS_ACCES_TRANSFER) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2PS_ACCES_TRANSFER' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PPT_RIN_03(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_PPT_RIN_04(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2PS_ACCES_TRANSFER) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2PS_ACCES_TRANSFER' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PPT_RIN_04(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_PPT_BYE_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2PS_ACCES_TRANSFER) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2PS_ACCES_TRANSFER' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PPT_BYE_01(p_cSeq_s)); + + // synchronize both PTCs on 4 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_PPT_BYE_01 + + /* + * @desc Verify that the SCC AS successfully processes an CANCEL on a early dialog. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_PPT_BYE_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_RELEASING_EARLY_DIALOG_DURING_PS2PS_ACCES_TRANSFER) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_RELEASING_EARLY_DIALOG_DURING_PS2PS_ACCES_TRANSFER' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PPT_BYE_02(p_cSeq_s)); + + // synchronize both PTCs on 4 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_PPT_BYE_02 + + /* + * @desc Verify that the SCC AS successfully processes an CANCEL on a early dialog. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_PPT_CAN_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PPT_CAN_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_PPT_RES_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PPT_RES_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_CON_RIN_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2PS_ACCES_TRANSFER_IN_CONJUNCTION_PS2CS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2PS_ACCES_TRANSFER_IN_CONJUNCTION_PS2CS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CON_RIN_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_CON_RIN_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2PS_ACCES_TRANSFER_IN_CONJUNCTION_PS2CS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2PS_ACCES_TRANSFER_IN_CONJUNCTION_PS2CS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CON_RIN_02(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_CON_RIN_03(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2PS_ACCES_TRANSFER_IN_CONJUNCTION_PS2CS) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2PS_ACCES_TRANSFER_IN_CONJUNCTION_PS2CS' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CON_RIN_03(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_CON_RIN_03 + + } // End of group Group_11_3 + + group Group_12_3 { + + /* + * @desc Verify that the SCCAS distinguish SIP INVITE with STN-SR for nonexisting dialog. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_SRA_INV_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_SRVCC) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_SRVCC' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_SRA_INV_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_SRA_INV_01 + + /* + * @desc Verify that the SCCAS distinguish SIP INVITE with STN-SR and informs remote UE. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_SRA_INV_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_SRVCC) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_SRVCC' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_SRA_INV_02(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_SRA_INV_02 + + /* + * @desc Verify that the SCCAS distinguish Transfer of first session. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_SRA_INV_03(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_SRVCC) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_SRVCC' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_SRA_INV_03(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_SRA_INV_03 + + /* + * @desc Verify that the SCCAS distinguish SIP INVITE with STN-SR and not release source leg. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_SRA_INV_04(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_SRVCC) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_SRVCC' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_SRA_INV_04(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_SRA_INV_04 + + /* + * @desc Verify that the SCCAS distinguish SIP INVITE with STN-SR and not release source leg. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_SRA_BYE_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_SRVCC) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_SRVCC' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_SRA_BYE_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_SRA_BYE_01 + + /* + * @desc Verify that the SCCAS distinguish SIP BYE with STN-SR and release source leg after OperatiorSpecificTimer timeout. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_SRA_BYE_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_SRVCC) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_SRVCC' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_SRA_BYE_02(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_SRA_BYE_02 + + /* + * @desc Verify that the SCCAS distinguish SIP BYE with STN-SR and release source leg on BYE Cause different from Cause Q850 31. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_SRA_BYE_03(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_SRVCC) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_SRVCC' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_SRA_BYE_03(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_SRA_BYE_03 + + /* + * @desc Verify that the SCCAS distinguish SIP CANCEL and release session transfered leg after OperatiorSpecificTimer timeout. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_SRA_CAN_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_SRVCC) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_SRVCC' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_SRA_CAN_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_SRA_CAN_01 + + /* + * @desc Verify that the SCCAS send 200Ok_CANCEL and release PStoCS session transfered leg in alerting state for terminating user. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_SRA_CAN_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT or not PICS_SCCAS_PS2CS_SRVCC) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' and 'PICS_SCCAS_PS2CS_SRVCC' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_SRA_CAN_02(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_SRA_CAN_02 + + /* + * @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 Transaction Id + */ + testcase TC_ISC_SCCAS_PCT_INV_06(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PCT_INV_06(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_PCT_INV_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PCT_INV_02(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_PCT_INV_02 + + /* + * @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 Transaction Id + */ + testcase TC_ISC_SCCAS_PCT_INV_03(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PCT_INV_03(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_PCT_INV_03 + + /* + * @desc Verify that SCC AS correctly recognizes and initiated procedures for PS to CS dual radio access transfer of an additional session in an early dialog phase. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_PCT_INV_04(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_PCT_INV_04(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_PCT_INV_04 + + /* + * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_MED_OPT_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_MED_OPT_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_07(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_07(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_08(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_08(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_09(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_09(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_10(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_10(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_CPT_INV_10 + + /* + * @desc Verify that the SCC AS handles correctly additional session transfer initiation. + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_11(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_11(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_12(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_12(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_13(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_13(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_CPT_INV_14(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_14(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of 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 Transaction Id + */ + testcase TC_ISC_SCCAS_TER_BYE_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + //Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_TER_BYE_01(p_cSeq_s)); + + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_TER_BYE_01 + + } // End of group Group_12_3 + +} // End of module AtsSccas_Testcases diff --git a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..947cc380265a2fb6681324a7f230a38e87d289c3 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn @@ -0,0 +1,256 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides the Test Cases for SCCAS ETSI TS 124 292 v1.6.0. + */ + +module AtsSccas_Testcases_TS124292 +{ + //LibCommon + import from LibCommon_Sync all ; + import from LibCommon_VerdictControl all; + //LibSip + import from LibSip_Interface all; + import from LibSip_SIPTypesAndValues all; + //LibIms + import from LibIms_SIPTypesAndValues all; + import from LibIms_Interface all; + //AtsSccas + import from AtsSccas_TestConfiguration all; + import from AtsSccas_TestSystem all; + import from AtsSccas_TCFunctions_TS124292 all; + import from AtsSccas_PICS all; + + group isc_registration { + + /* + * @desc Verify that the MSC successfully register to the IM CN Subsystem + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_MSC_REG_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { + // Local variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_MSC_REG_01(p_cSeq_s)); + + // Synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_MSC_REG_01 + + /* + * @desc Verify that the MSC successfully register to the IM CN Subsystem + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_MSC_REG_02(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { + // Local variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_MSC_REG_02(p_cSeq_s)); + + // Synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_MSC_REG_02 + + } // End of isc_registration + + group isc_subscribe { + + /* + * @desc Verify that the MSC successfully subscribe to the IM CN Subsystem + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_MSC_SUB_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { + // Local variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_MSC_SUB_01(p_cSeq_s)); + + // Synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_MSC_SUB_01 + + /* + * @desc Verify that the MSC receive NOTIFY on successfully subscription to the IM CN Subsystem + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_MSC_SUB_02(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { + // Local variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_MSC_SUB_02(p_cSeq_s)); + + // Synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_MSC_SUB_02 + + } // End of group isc_subscribe + + group isc_reregistration { + + /* + * @desc Verify that the MSC successfully re-register to the IM CN Subsystem + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_MSC_REREG_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { + // Local variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_MSC_REREG_01(p_cSeq_s)); + + // Synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_MSC_REREG_01 + + /* + * @desc Verify that the MSC successfully register to the IM CN Subsystem + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_MSC_REREG_02(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { + // Local variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_MSC_REREG_02(p_cSeq_s)); + + // Synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_MSC_REREG_02 + + } // End of group isc_reregistration + + group call_origination { + + /* + * @desc Verify that the MSC successfully sends INVITE to the IM CN Subsystem + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_MSC_CALL_ORG_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { + // Local variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_MSC_CALL_ORG_01(p_cSeq_s)); + + // Synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_MSC_CALL_ORG_01 + + /* + * @desc Verify that the MSC successfully sends INVITE to the IM CN Subsystem + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_MSC_CALL_ORG_02(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { + // Local variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration + f_cf_1IscUp(v_imsComponent_ueims); + + // Start + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_MSC_CALL_ORG_02(p_cSeq_s)); + + // Synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TC_ISC_SCCAS_MSC_CALL_ORG_02 + + } // End of group call_origination + +} // End of module AtsSccas_Testcases_TS124292 diff --git a/ttcn/LibCommon b/ttcn/LibCommon new file mode 160000 index 0000000000000000000000000000000000000000..22cc04e32b0e37f70a7df30df12727a6546e2916 --- /dev/null +++ b/ttcn/LibCommon @@ -0,0 +1 @@ +Subproject commit 22cc04e32b0e37f70a7df30df12727a6546e2916 diff --git a/ttcn/LibIms b/ttcn/LibIms new file mode 160000 index 0000000000000000000000000000000000000000..d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 --- /dev/null +++ b/ttcn/LibIms @@ -0,0 +1 @@ +Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 diff --git a/ttcn/LibSip b/ttcn/LibSip new file mode 160000 index 0000000000000000000000000000000000000000..44122c6589a3fa7f42825d2475511d08da499ff0 --- /dev/null +++ b/ttcn/LibSip @@ -0,0 +1 @@ +Subproject commit 44122c6589a3fa7f42825d2475511d08da499ff0