From 75f6b6f88f4c292a7faaf273fd8ae1558dafd84f Mon Sep 17 00:00:00 2001 From: pintar Date: Fri, 11 Mar 2022 13:29:47 +0100 Subject: [PATCH 001/202] inital files --- test_purposes/References.txt | 19 ++++ test_purposes/Sip_Common.tplan2 | 164 ++++++++++++++++++++++++++++ test_purposes/ims/TP_SCSCF.tplan2 | 117 ++++++++++++++++++++ test_purposes/sccas/TP_SCCAS.tplan2 | 117 ++++++++++++++++++++ 4 files changed, 417 insertions(+) create mode 100644 test_purposes/References.txt create mode 100644 test_purposes/Sip_Common.tplan2 create mode 100644 test_purposes/ims/TP_SCSCF.tplan2 create mode 100644 test_purposes/sccas/TP_SCCAS.tplan2 diff --git a/test_purposes/References.txt b/test_purposes/References.txt new file mode 100644 index 0000000..0569619 --- /dev/null +++ b/test_purposes/References.txt @@ -0,0 +1,19 @@ +TODO + +[1] ETSI ES 203 119-4: "TDL: Structured Test Objective Specification (Extension)" +[2] ETSI TS 124 229: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; IP multimedia call control protocol based on Session Initiation Protocol (SIP) and Session Description Protocol (SDP); Stage 3 (3GPP TS 24.229 Release 15)". +[3] ETSI TS 129 165: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Inter-IMS Network to Network Interface (NNI) (3GPP TS 29.165 Release 15)". +[4] ETSI TS 129 228: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; IP Multimedia (IM) Subsystem Cx and Dx Interfaces; Signalling flows and message contents (3GPP TS 29.228 Release 15)". +[5] ETSI TS 129 229: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Cx and Dx interfaces based on the Diameter protocol; Protocol details (3GPP TS 29.229 Release 15)". +[6] ETSI TS 132 260: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Telecommunication management;Charging management;IP Multimedia Subsystem (IMS) charging (3GPP TS 32.260 Release 15)". +[7] ETSI TS 132 299: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Telecommunication management; Charging management; Diameter charging applications (3GPP TS 32.299 Release 15)". +[8] ETSI TS 129 214: "Universal Mobile Telecommunications System (UMTS); LTE; Policy and charging control over Rx reference point (3GPP TS 29.214 Release 15)". +[9] ETSI TS 129 212: "Universal Mobile Telecommunications System (UMTS); LTE; Policy and Charging Control (PCC); Reference points (3GPP TS 29.212 Release 15)". +[10] ETSI TS 129 272: "Universal Mobile Telecommunications System (UMTS); LTE; Evolved Packet System (EPS); Mobility Management Entity (MME) and Serving GPRS Support Node (SGSN) related interfaces based on Diameter protocol (3GPP TS 29.272 Release 15)". +[11] ETSI TS 129 215: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Policy and Charging Control (PCC) over S9 reference point; Stage 3 (3GPP TS 29.215 Release 15)". +[12] ETSI TS 129 328: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; IP Multimedia (IM) Subsystem Sh interface; Signalling flows and message contents (3GPP TS 29.328 Release 15)". +[13] ETSI TS 129 329: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Sh interface based on the Diameter protocol; Protocol details (3GPP TS 29.329 Release 15)". +[14] ISO/IEC 9646-1: "Information technology -- Open Systems Interconnection -- Conformance testing methodology and framework -- Part 1: General concepts". +[15] ISO/IEC 9646-7: "Information technology -- Open Systems Interconnection -- Conformance testing methodology and framework -- Part 7: Implementation Conformance Statements". +[16] ETSI ETS 300 406: "Methods for testing and Specification (MTS); Protocol and profile conformance testing specifications; Standardization methodology". +[17] IETF RFC 3588: "Diameter Base Protocol". \ 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 0000000..d848587 --- /dev/null +++ b/test_purposes/Sip_Common.tplan2 @@ -0,0 +1,164 @@ +/* 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 + - UE + - IUT + ; + events: + - receives + - sends + - forwards + // Initial conditions + - isTriggeredToStart + - isNotRegisteredTo + - hasAchievedFirstRegistration + - isRegisteredTo + - isNotAttachedTo + - isAttachedTo + - isNotConfiguredForTopologyHiding + - isConfiguredForTopologyHiding + - isExistingIn + - establishedSecurityRelation + - registeredIdentityTelURI + - registeredIdentitySipURI + - hasInitiatedDialogWith + - isConfiguredWithENUMentryForTelURI_E164NumberOf + - hasReceivedInitialRequestForDialog + - hasReceived200OkOnInitialRequestForDialogWith + - hasReceived180OnInitialRequest + - hasReceived200OkCancel + - hasReceivedTerminatedRequest + - registeredPublicIdsWithTelUriAndSipUri + - hasReceivedSubsequentOrTargetRefreshRequestInDialog + - previouslyEstablishedCallWith + - isRequestedToSend + - isRequestedToDeregisterUser + - isBusy + - isNoLongerAvailable + - isTriggeredToDetachUser + - isRequestedToDetachfromNetwork + - hasAchievedFirstREGISTER + - hasResponded486INVITE + - hasAchievedInitialINVITE + - hasAchievedINVITE + ; + } // 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_TO_BE_DEFINED +// ; +// } // End of Const section + + Data { + type SipMessage; + type EnumMessage; + + SipMessage REGISTER; + SipMessage SUBSCRIBE; + SipMessage INVITE; + SipMessage ACK; + SipMessage CANCEL; + SipMessage BYE; + // SIP Responses + SipMessage r_100_Trying; + SipMessage r_180_Ringing; + SipMessage r_200_Ok; + SipMessage r_2xx_Any; + SipMessage r_401_Unauthorized; + SipMessage r_403_Forbidden; + SipMessage r_404_NotFound; + SipMessage r_486_INVITE; + SipMessage r_4xx_Any; + } // 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_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; + } + + //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/ims/TP_SCSCF.tplan2 b/test_purposes/ims/TP_SCSCF.tplan2 new file mode 100644 index 0000000..21e2b50 --- /dev/null +++ b/test_purposes/ims/TP_SCSCF.tplan2 @@ -0,0 +1,117 @@ +/* +Copyright (c) ETSI 2019-2020. + +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 SCSCF */ +Package TP_SCSCF { + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_SCCAS_REGISTER_01 + + Test objective "TODO -- Verify that the P-CSCF successfully processes a first registration (Successful)." + + Reference + "TODO -ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2" + + Config Id CFG_SCSCF_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_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; + 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, + 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_MW_PCSCF_REGISTER_01 + + Test Purpose { + + TP Id TP_SCCAS_INVITE_01 + + Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [1], Clauses 5.2.7.2 and 6.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, + PAccessNetworkInfo, + MessageBody containing + SDP containing + 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 + Version indicating value "0";;; + to the IMS_S_CSCF entity + } + } + + } // End of TP_MW_PCSCF_INVITE_01 + +} // End of Package TP_MW_PS + diff --git a/test_purposes/sccas/TP_SCCAS.tplan2 b/test_purposes/sccas/TP_SCCAS.tplan2 new file mode 100644 index 0000000..2d5d6c2 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS.tplan2 @@ -0,0 +1,117 @@ +/* +Copyright (c) ETSI 2019-2020. + +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 { + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_SCCAS_REGISTER_01 + + Test objective "TODO -- Verify that the P-CSCF successfully processes a first registration (Successful)." + + Reference + "TODO -ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2" + + 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_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; + 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, + 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_MW_PCSCF_REGISTER_01 + + Test Purpose { + + TP Id TP_SCCAS_INVITE_01 + + Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [1], Clauses 5.2.7.2 and 6.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, + PAccessNetworkInfo, + MessageBody containing + SDP containing + 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 + Version indicating value "0";;; + to the IMS_S_CSCF entity + } + } + + } // End of TP_MW_PCSCF_INVITE_01 + +} // End of Package TP_MW_PS + -- GitLab From b5e500e42e61e6f3aaa70cb94361ac92ec55c9d6 Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 24 Mar 2022 08:33:53 +0100 Subject: [PATCH 002/202] added registration TPs --- test_purposes/Sip_Common.tplan2 | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index d848587..1a6c4a0 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -30,6 +30,7 @@ Package Sip_Common { - IMS_S_CSCF - UE - IUT + - ATCF ; events: - receives @@ -105,6 +106,15 @@ Package Sip_Common { 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; @@ -121,6 +131,15 @@ Package Sip_Common { SipMessage r_404_NotFound; SipMessage r_486_INVITE; 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 { -- GitLab From b0f15d86b69ec1b509247f06a5a2c39c4e4f2b44 Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 24 Mar 2022 08:34:31 +0100 Subject: [PATCH 003/202] added registration TPs --- .../sccas/TP_SCCAS_Chapter_6_3.tplan2 | 264 ++++++++++++++++++ 1 file changed, 264 insertions(+) create mode 100644 test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 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 0000000..57fb192 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 @@ -0,0 +1,264 @@ +/* +Copyright (c) ETSI 2019-2020. + +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; + + Test Purpose { + + TP Id TP_ISC_SCCAS_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_REG_01 + + Test Purpose { + + TP Id TP_ISC_SCCAS_REG_02 + + 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";; + 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_REG_02 + + Test Purpose { + + TP Id TP_ISC_SCCAS_REG_03 + + 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_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";; + 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 + to the ATCF entity + } + + } + + } // End of TP_ISC_SCCAS_REG_03 + + Test Purpose { + + TP Id TP_ISC_SCCAS_REG_04 + + 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_REG_04 + + Test Purpose { + + TP Id TP_SCCAS_INVITE_01 + + Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." + + Reference + "ETSI TS 124 229 [1], Clauses 5.2.7.2 and 6.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, + PAccessNetworkInfo, + MessageBody containing + SDP containing + 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 + Version indicating value "0";;; + to the IMS_S_CSCF entity + } + } + + } // End of TP_MW_PCSCF_INVITE_01 + +} // End of Package TP_MW_PS + -- GitLab From 8b41a64aae708ccbc1cbb24f14e857d4782de630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Fri, 25 Mar 2022 12:06:44 +0100 Subject: [PATCH 004/202] initial commit for chapter 9.3.3 - SCC AS procedures for CS to PS access transfer --- test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 | 321 +++++++++++++++++++++ 1 file changed, 321 insertions(+) create mode 100644 test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 diff --git a/test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 new file mode 100644 index 0000000..e9e4855 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 @@ -0,0 +1,321 @@ +/* +Copyright (c) ETSI 2019-2020. + +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 { + + + // import all from Sip_Common; + + + + + 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_SCCAS_CS_to_PS_access_transfer_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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS // TODO + } + + 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, // TODO PX + from_tag indicating value PX_from_tag, // TODO PX + to_tag indicating value PX_to_tag // TODO PX + MessageBody containing + SDP containing // SDP: Session Description Protocol + Media indicating value PX_PSMediaOnly, // TODO: PX for media only + 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, // TODO: PX for media only + Version indicating value "0";;; + to the IMS_S_CSCF entity + } + } + + } // end TP TP_SCCAS_CS_to_PS_access_transfer_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 Id TP_SCCAS_CS_to_PS_access_transfer_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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS // TODO + } + + 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, // TODO PX + from_tag indicating value PX_from_tag, // TODO PX + to_tag indicating value PX_to_tag // TODO PX + MessageBody containing + SDP containing // SDP: Session Description Protocol + Media indicating value PX_PSMediaOnly, // TODO: PX for media only + 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, // TODO: PX for media only + Version indicating value "0";;; + to the IMS_S_CSCF entity + } + } + + } // end TP_SCCAS_CS_to_PS_access_transfer_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_SCCAS_CS_to_PS_access_transfer_03 + + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS and // TODO + 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, // TODO PX + from_tag indicating value PX_from_tag, // TODO PX + to_tag indicating value PX_to_tag // TODO PX + MessageBody containing + SDP containing // SDP: Session Description Protocol + Media indicating value PX_PSMediaOnly, // TODO: PX for media only + 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, // TODO: PX for media only + Version indicating value "0";;; + to the IMS_S_CSCF entity + } + } + + } // end TP_SCCAS_CS_to_PS_access_transfer_03 + + + // Test puposes 4: Upon receiving the SIP ACK request originated from the SC UE, the SCC AS shall: + Test Purpose { + + TP Id TP_SCCAS_CS_to_PS_access_transfer_04 + + //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 // TODO + + 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_SCCAS_CS_to_PS_access_transfer_04 + + + } // 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" + { + + + } // 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.2 SCC AS procedures for PS to CS dual radio access transfer of a originating session in the alerting phase" + { + + } // 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 prealerting phase" + { + + } // 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" + { + + } // 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" + { + + } // 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" + { + + + } // end Group "9.3.6 Removal of non-transferred audio media components and release of source access legs" + +} // End of Package TP_SCCAS + -- GitLab From 87bd4a1f01fd1ad78c7d6f47a9b6e8dd02648f10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Mon, 6 Jun 2022 14:40:47 +0200 Subject: [PATCH 005/202] new naming conventions for TPs --- test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 index e9e4855..a0cf7be 100644 --- a/test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 @@ -16,11 +16,7 @@ file and shall not imply any sub-license right. /* interface at SCCAS */ Package TP_SCCAS { - - // import all from Sip_Common; - - - + Group "9.3.3 SCC AS procedures for CS to PS access transfer" { @@ -35,8 +31,7 @@ Package TP_SCCAS { // PS media only (PS Packet Switch), // SCC AS shall follow the procedures specified in subclause 10.3.2. - - TP Id TP_SCCAS_CS_to_PS_access_transfer_01 + 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." @@ -103,8 +98,8 @@ Package TP_SCCAS { // PS media only (PS Packet Switch), // SCC AS shall follow the procedures specified in subclause 10.3.2. - - TP Id TP_SCCAS_CS_to_PS_access_transfer_02 + // 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." @@ -168,8 +163,8 @@ Package TP_SCCAS { // 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_SCCAS_CS_to_PS_access_transfer_03 + + TP Id TP_ISC_SCCAS_CPT_RIN_01 Test objective "Verify that the P-CSCF successfully processes an re-INVITE (Originating Leg)" -- GitLab From b42603a24f71f904bf5f6d6ebc455b9cf3c40a38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Mon, 6 Jun 2022 14:50:36 +0200 Subject: [PATCH 006/202] rename file --- ...{TP_SCCAS2_FOKUS.tplan2 => TP_SCCAS2_Chapter_9_3_FOKUS.tplan2} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test_purposes/sccas/{TP_SCCAS2_FOKUS.tplan2 => TP_SCCAS2_Chapter_9_3_FOKUS.tplan2} (100%) diff --git a/test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS2_Chapter_9_3_FOKUS.tplan2 similarity index 100% rename from test_purposes/sccas/TP_SCCAS2_FOKUS.tplan2 rename to test_purposes/sccas/TP_SCCAS2_Chapter_9_3_FOKUS.tplan2 -- GitLab From 84c3aa1785ddd21c39eab4677b14af639d739a49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Mon, 6 Jun 2022 14:52:04 +0200 Subject: [PATCH 007/202] rename file --- ...Chapter_9_3_FOKUS.tplan2 => TP_SCCAS_Chapter_9_3_FOKUS.tplan2} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test_purposes/sccas/{TP_SCCAS2_Chapter_9_3_FOKUS.tplan2 => TP_SCCAS_Chapter_9_3_FOKUS.tplan2} (100%) diff --git a/test_purposes/sccas/TP_SCCAS2_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 similarity index 100% rename from test_purposes/sccas/TP_SCCAS2_Chapter_9_3_FOKUS.tplan2 rename to test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 -- GitLab From e66dc0940060575318579b3f2b7ece45e929e031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Tue, 7 Jun 2022 10:29:19 +0200 Subject: [PATCH 008/202] first test purpose ideas for 9.3.6 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 183 +++++++++++++++++- 1 file changed, 177 insertions(+), 6 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index a0cf7be..2049c1c 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -33,7 +33,7 @@ Package TP_SCCAS { 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." + 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" @@ -101,7 +101,7 @@ Package TP_SCCAS { // 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." + 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" @@ -166,7 +166,7 @@ Package TP_SCCAS { TP Id TP_ISC_SCCAS_CPT_RIN_01 - Test objective "Verify that the P-CSCF successfully processes an re-INVITE (Originating Leg)" + Test objective "Verify that the P-CSCF successfully processes an re-INVITE (Originating Leg)" Reference "ETSI TS 124 237 [1], Clauses 9.3.3" @@ -276,10 +276,31 @@ Package TP_SCCAS { } // 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" + Group "9.3.4 SCC AS procedures for CS to PS access transfer with MSC server assisted mid-call feature" { + + +// 1. the Refer-Sub header field with value "false" as specified in IETF RFC 4488 [20]; +// 2. the Supported header field with value "norefersub" as specified in IETF RFC 4488 [20]; +// 3. the Refer-To header field containing the information related to the session with an audio media other than the +// session associated with the SIP INVITE request due to static STI, i.e. set to the additional transferred session +// SCC AS URI and the following URI header fields: +// A. the Target-Dialog URI header field populated as specified in IETF RFC 4538 [11], containing the dialog +// identifier of the session with the MSC Server; +// B. the Require URI header field populated with the option tag value "tdialog"; +// C. if the remote UE did not request privacy then the To URI header field populated as specified in +// IETF RFC 3261 [19], containing the P-Asserted-Identity provided by the remote UE during the session +// establishment; +// D. the From URI header field populated as specified in IETF RFC 3261 [19], containing the public user identity +// of the SC UE provided during the session establishment; +// E. the Content-Type URI header field with "application/sdp"; and +// F. the hname "body" URI header field populated with SDP describing the media streams as negotiated in the +// session with the remote UE and with directionality as used by the MSC Server; +// 4. the Content-Type header field with the value set to MIME type specified in the subclause D.1.3; and +// 5. a XML body compliant to the XML schema specified in the subclause D.1.2. + } // 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" @@ -306,10 +327,160 @@ Package TP_SCCAS { } // 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" + 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_ICS_SCCAS_XXX_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 " + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.6." + + Config Id CFG_SCCAS_01 + + PICS Selection NONE // TODO + +// 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_ICS_SCCAS_XXX_BYE_01 + + + + Test Purpose { + + + TP Id TP_ICS_SCCAS_XXX_BYE_02 + + // 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 " + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.6." + + Config Id CFG_SCCAS_01 + + PICS Selection NONE // TODO + +// 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_ICS_SCCAS_XXX_BYE_02 + + + + Test Purpose { + + + TP Id TP_ICS_SCCAS_XXX_BYE_03 + + // 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 " + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.6." + + Config Id CFG_SCCAS_01 + + PICS Selection NONE // TODO + +// 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_ICS_SCCAS_XXX_BYE_03 + } // end Group "9.3.6 Removal of non-transferred audio media components and release of source access legs" } // End of Package TP_SCCAS -- GitLab From c4bc824c88b7a4b7ef910091b15cee5fc1c37372 Mon Sep 17 00:00:00 2001 From: pintar Date: Fri, 1 Apr 2022 10:06:02 +0200 Subject: [PATCH 009/202] New SCCAS configuration added --- test_purposes/Sip_Common.tplan2 | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index de6216e..398f444 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -154,6 +154,15 @@ Package Sip_Common { 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_SCSCF_01 containing -- GitLab From 8a6a8ad59543539a0cee0ae61d1f89ade77b48ab Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 9 May 2022 09:11:54 +0200 Subject: [PATCH 010/202] 6.4 chapter added --- .../sccas/TP_SCCAS_Chapter_6_3.tplan2 | 267 +++++++++++++----- 1 file changed, 190 insertions(+), 77 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 index 57fb192..ebd3571 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 @@ -18,7 +18,11 @@ Package TP_SCCAS_Chapter_6_3 { import all from Sip_Common; - Test Purpose { + Group "6.3.1 General" { + + import all from Sip_Common; + + Test Purpose { TP Id TP_ISC_SCCAS_REG_01 @@ -67,21 +71,21 @@ Package TP_SCCAS_Chapter_6_3 { } } // End of TP_ISC_SCCAS_REG_01 - Test Purpose { + Test Purpose { - TP Id TP_ISC_SCCAS_REG_02 + TP Id TP_ISC_SCCAS_REG_04 - Test objective "Verify that the SCCAS successfully obtain/processes SRVCC information." + Test objective "Verify that the SCCAS successfully obtain/processes de-registration information (Expires=0)." Reference - "ETSI TS 124 237 [1], Clause 6.3.2 (1st numbered list)" + "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 + the UE entity isRegisteredTo the IMS_A } Expected behaviour @@ -92,11 +96,7 @@ Package TP_SCCAS_Chapter_6_3 { 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";; + Expires indicating value 0; from the IMS_S_CSCF entity } then { @@ -104,24 +104,27 @@ Package TP_SCCAS_Chapter_6_3 { 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; + Via indicating value PX_UE_A_VIA ; to the IMS_S_CSCF entity - } - } - - } // End of TP_ISC_SCCAS_REG_02 + } // End of TP_ISC_SCCAS_REG_04 + + } //End Group "6.3.1 General" - Test Purpose { + + Group "6.3.2 Triggers for the SCCAS providing information to ATCF"{ + + import all from Sip_Common; + + Test Purpose { - TP Id TP_ISC_SCCAS_REG_03 + TP Id TP_ISC_SCCAS_REG_02 - Test objective "Verify that the SCCAS successfully sends MESSAGE providing PS to CS SRVCC information." + Test objective "Verify that the SCCAS successfully obtain/processes SRVCC information." Reference - "ETSI TS 124 237 [1], Clause 6.3.3" + "ETSI TS 124 237 [1], Clause 6.3.2 (1st numbered list)" Config Id CFG_SCCAS_01 @@ -152,39 +155,35 @@ Package TP_SCCAS_Chapter_6_3 { 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" ;; - ; + Contact indicating value PX_UE_A_SIP_URI; to the IMS_S_CSCF entity - - and the IUT entity sends a MESSAGE - to the ATCF entity + } } - } // End of TP_ISC_SCCAS_REG_03 - - Test Purpose { + } // End of TP_ISC_SCCAS_REG_02 + } // 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_REG_04 + TP Id TP_ISC_SCCAS_REG_03 - Test objective "Verify that the SCCAS successfully obtain/processes de-registration information (Expires=0)." + Test objective "Verify that the SCCAS successfully sends MESSAGE providing PS to CS SRVCC information." Reference - "ETSI TS 124 237 [1], Clause 6.3.1" + "ETSI TS 124 237 [1], Clause 6.3.3" Config Id CFG_SCCAS_01 PICS Selection NONE Initial conditions with { - the UE entity isRegisteredTo the IMS_A + the UE entity isNotRegisteredTo the IMS_A } Expected behaviour @@ -195,7 +194,11 @@ Package TP_SCCAS_Chapter_6_3 { 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; + FeatureCaps containing + g3gppAtcfFeatureCapabilityIndicator;, + 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 { @@ -203,62 +206,172 @@ Package TP_SCCAS_Chapter_6_3 { 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 ; + 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 + to the ATCF entity } + } - } // End of TP_ISC_SCCAS_REG_04 + + } // End of TP_ISC_SCCAS_REG_03 + } //end Group "6.3.3 SCCAS providing the PS to CS related SRVCC information to the ATCF" + - Test Purpose { + Group "6.3.4 Triggers for the SCCAS providing information to MSC server"{ + + import all from Sip_Common; + } //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; + } //end Group "6.3.5 SCCAS providing the CS to PS SRVCC information to the MSC server" + + + 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_SCCAS_INVITE_01 + TP Id TP_ISC_SCCAS_INI_01 - Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." + Test objective "Verify that the SCCAS send INVITE for anchored user populated with ." Reference - "ETSI TS 124 229 [1], Clauses 5.2.7.2 and 6.2" + "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 + the UE entity isRegisteredTo the IMS_A } 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, - PAccessNetworkInfo, - MessageBody containing - SDP containing - 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 - Version indicating value "0";;; - to the IMS_S_CSCF entity - } + 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_MW_PCSCF_INVITE_01 + } // End of TP_ISC_SCCAS_REG_04 + + } // end Group "6A.4.2 SIP INVITE request" + + Group "6A.4.3 SIP INVITE responses towards the SC UE"{ + + import all from Sip_Common; + } // 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; + } // 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; + } // 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; + } // 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; + } // 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" + + +// Test Purpose { +// +// TP Id TP_SCCAS_INVITE_01 +// +// Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." +// +// Reference +// "ETSI TS 124 229 [1], Clauses 5.2.7.2 and 6.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, +// PAccessNetworkInfo, +// MessageBody containing +// SDP containing +// 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 +// Version indicating value "0";;; +// to the IMS_S_CSCF entity +// } +// } +// +// } // End of TP_MW_PCSCF_INVITE_01 + } // End of Package TP_MW_PS -- GitLab From 178a7d9ec3e6803c1b97bd584f7eca3fe605c1a0 Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 6 Jun 2022 12:27:50 +0200 Subject: [PATCH 011/202] New resp codes --- test_purposes/Sip_Common.tplan2 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 1a6c4a0..de6216e 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -50,6 +50,7 @@ Package Sip_Common { - registeredIdentityTelURI - registeredIdentitySipURI - hasInitiatedDialogWith + - hasEstablishedDialog - isConfiguredWithENUMentryForTelURI_E164NumberOf - hasReceivedInitialRequestForDialog - hasReceived200OkOnInitialRequestForDialogWith @@ -122,6 +123,7 @@ Package Sip_Common { SipMessage CANCEL; SipMessage BYE; // SIP Responses + SipMessage r_1xx_Any; SipMessage r_100_Trying; SipMessage r_180_Ringing; SipMessage r_200_Ok; -- GitLab From 75c4206dc16591278338134b0a816ddd52b51984 Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 6 Jun 2022 12:28:44 +0200 Subject: [PATCH 012/202] updated tests --- .../sccas/TP_SCCAS_Chapter_6_3.tplan2 | 154 +----------------- 1 file changed, 9 insertions(+), 145 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 index ebd3571..acab608 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 @@ -24,7 +24,7 @@ Package TP_SCCAS_Chapter_6_3 { Test Purpose { - TP Id TP_ISC_SCCAS_REG_01 + TP Id TP_ISC_SCCAS_RSC_REG_01 Test objective "Verify that the SCCAS successfully obtain/processes 3pty registration information." @@ -69,11 +69,11 @@ Package TP_SCCAS_Chapter_6_3 { to the IMS_S_CSCF entity } } - } // End of TP_ISC_SCCAS_REG_01 + } // End of TP_ISC_SCCAS_RSC_REG_01 Test Purpose { - TP Id TP_ISC_SCCAS_REG_04 + TP Id TP_ISC_SCCAS_RSC_REG_02 Test objective "Verify that the SCCAS successfully obtain/processes de-registration information (Expires=0)." @@ -108,7 +108,7 @@ Package TP_SCCAS_Chapter_6_3 { to the IMS_S_CSCF entity } } - } // End of TP_ISC_SCCAS_REG_04 + } // End of TP_ISC_SCCAS_RSC_REG_02 } //End Group "6.3.1 General" @@ -119,7 +119,7 @@ Package TP_SCCAS_Chapter_6_3 { Test Purpose { - TP Id TP_ISC_SCCAS_REG_02 + TP Id TP_ISC_SCCAS_RSC_REG_03 Test objective "Verify that the SCCAS successfully obtain/processes SRVCC information." @@ -162,7 +162,7 @@ Package TP_SCCAS_Chapter_6_3 { } - } // End of TP_ISC_SCCAS_REG_02 + } // 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"{ @@ -171,7 +171,7 @@ Package TP_SCCAS_Chapter_6_3 { Test Purpose { - TP Id TP_ISC_SCCAS_REG_03 + TP Id TP_ISC_SCCAS_RSC_REG_04 Test objective "Verify that the SCCAS successfully sends MESSAGE providing PS to CS SRVCC information." @@ -223,7 +223,7 @@ Package TP_SCCAS_Chapter_6_3 { } - } // End of TP_ISC_SCCAS_REG_03 + } // End of TP_ISC_SCCAS_RSC_REG_03 } //end Group "6.3.3 SCCAS providing the PS to CS related SRVCC information to the ATCF" @@ -237,141 +237,5 @@ Package TP_SCCAS_Chapter_6_3 { import all from Sip_Common; } //end Group "6.3.5 SCCAS providing the CS to PS SRVCC information to the MSC server" - - 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_INI_01 - - Test objective "Verify that the SCCAS send INVITE for anchored user populated with ." - - 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 { - 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_REG_04 - - } // end Group "6A.4.2 SIP INVITE request" - - Group "6A.4.3 SIP INVITE responses towards the SC UE"{ - - import all from Sip_Common; - } // 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; - } // 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; - } // 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; - } // 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; - } // 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" - - -// Test Purpose { -// -// TP Id TP_SCCAS_INVITE_01 -// -// Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." -// -// Reference -// "ETSI TS 124 229 [1], Clauses 5.2.7.2 and 6.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, -// PAccessNetworkInfo, -// MessageBody containing -// SDP containing -// 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 -// Version indicating value "0";;; -// to the IMS_S_CSCF entity -// } -// } -// -// } // End of TP_MW_PCSCF_INVITE_01 - - -} // End of Package TP_MW_PS +} // End of Package TP_SCCAS_Chapter_6_3 -- GitLab From d6493be669ec9d147076ef836c3e934e123bc708 Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 6 Jun 2022 12:29:29 +0200 Subject: [PATCH 013/202] updated tests --- .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 90 ++++ .../sccas/TP_SCCAS_Chapter_6A_4.tplan2 | 432 ++++++++++++++++++ .../sccas/TP_SCCAS_Chapter_7_3.tplan2 | 138 ++++++ .../sccas/TP_SCCAS_Chapter_8_3.tplan2 | 30 ++ .../sccas/TP_SCCAS_Chapter_9_3.tplan2 | 60 +++ 5 files changed, 750 insertions(+) create mode 100644 test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 create mode 100644 test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 create mode 100644 test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 create mode 100644 test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 create mode 100644 test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 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 0000000..748a3f9 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -0,0 +1,90 @@ +/* +Copyright (c) ETSI 2019-2020. + +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; + } // 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; + } // 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.2.1 General"{ + + } + Group "12.3.2.2 Transfer of the first session"{ + + } + Group "12.3.2.3 Transfer of an additional session"{ + + } + + } // 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"{ +// +// import all from Sip_Common; +// } // 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; +// } // 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"{ +// +// import all from Sip_Common; +// } // 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; +// } // 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 0000000..2d5a726 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 @@ -0,0 +1,432 @@ +/* +Copyright (c) ETSI 2019-2020. + +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 ." + + 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 { + 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 + } + + 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 r_1xx_Any 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_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_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_2xx_Any 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 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 r_1xx_Any 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_01 + + 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 //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 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_7_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 new file mode 100644 index 0000000..9af27a6 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 @@ -0,0 +1,138 @@ +/* +Copyright (c) ETSI 2019-2020. + +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_INI_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" + + 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", + Contact, + 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 + //Contact containing + ; + to the IMS_S_CSCF entity + } + } + } // End of TP_ISC_SCCAS_ORI_INI_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_INI_02 + + Test objective "Verify that the SCCAS sends 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" + + 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, + 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_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_INI_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 0000000..55eb121 --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 @@ -0,0 +1,30 @@ +/* +Copyright (c) ETSI 2019-2020. + +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; + } // 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 0000000..60b67fc --- /dev/null +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 @@ -0,0 +1,60 @@ +/* +Copyright (c) ETSI 2019-2020. + +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; + } // 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; +// } // 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; +// } // 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"{ +// +// import all from Sip_Common; +// }// end 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.6 Removal of non-transferred audio media components and release of source access legs"{ +// +// import all from Sip_Common; +// }// 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"{ +// +// import all from Sip_Common; +// } // 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 + -- GitLab From 2a86fb923e42e523caa6242b49f63d407715fba3 Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 6 Jun 2022 22:35:36 +0200 Subject: [PATCH 014/202] updated tests --- .../sccas/TP_SCCAS_Chapter_6_3.tplan2 | 80 +++++++++++++++++-- 1 file changed, 72 insertions(+), 8 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 index acab608..0ce1be5 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 @@ -146,7 +146,7 @@ Package TP_SCCAS_Chapter_6_3 { g3gppAtcfFeatureCapabilityIndicator;, SipMessageBody containing MIME indicating value "REGISTER from_UE_A", - MIME indicating value "r_200_Ok to_UE_A";; + MIME indicating value "r_200_Ok to_UE_A" containing Contact;;; from the IMS_S_CSCF entity } then { @@ -178,9 +178,9 @@ Package TP_SCCAS_Chapter_6_3 { Reference "ETSI TS 124 237 [1], Clause 6.3.3" - Config Id CFG_SCCAS_01 + Config Id CFG_SCCAS_ATCF_01 - PICS Selection NONE + PICS Selection NONE //PS2CSSRVCC Initial conditions with { the UE entity isNotRegisteredTo the IMS_A @@ -195,10 +195,10 @@ Package TP_SCCAS_Chapter_6_3 { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, FeatureCaps containing - g3gppAtcfFeatureCapabilityIndicator;, + 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";; + MIME indicating value "r_200_Ok to_UE_A" containing Contact;;; from the IMS_S_CSCF entity } then { @@ -217,19 +217,83 @@ Package TP_SCCAS_Chapter_6_3 { ; to the IMS_S_CSCF entity - and the IUT entity sends a MESSAGE + 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_03 + } // 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; + 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.3" + + Config Id CFG_SCCAS_MSC_01 + + 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_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_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"{ -- GitLab From b779c73d0a7e19248f983aaaf077d3506c6238fc Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 7 Jun 2022 16:23:19 +0200 Subject: [PATCH 015/202] updated tests --- .../sccas/TP_SCCAS_Chapter_6A_4.tplan2 | 50 ++++++++++++------- .../sccas/TP_SCCAS_Chapter_6_3.tplan2 | 4 +- 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 index 2d5a726..54b1aea 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 @@ -29,7 +29,7 @@ Package TP_SCCAS_Chapter_6A_4 { TP Id TP_ISC_SCCAS_GEN_INV_01 - Test objective "Verify that the SCCAS send INVITE for anchored user populated with ." + 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" @@ -44,6 +44,11 @@ Package TP_SCCAS_Chapter_6A_4 { 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, @@ -57,7 +62,8 @@ Package TP_SCCAS_Chapter_6A_4 { 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 + to the IMS_S_CSCF entity + } } } // End of TP_ISC_SCCAS_GEN_INV_01 @@ -81,27 +87,28 @@ Package TP_SCCAS_Chapter_6A_4 { 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 + 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 + 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 + //Contact containing + // g3gppMidcallMediaFeature Tag, //list -B + // g3gppSrvccAlertingFeature tag, //list -C + // g3gppPs2csSrvccOrigPreAlertingMediaFeature Tag, //list -D FeatureCaps, - SipMessageBody;; + SipMessageBody; from the IMS_S_CSCF entity } then { - the IUT entity sends a r_1xx_Any containing + 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, @@ -141,12 +148,13 @@ Package TP_SCCAS_Chapter_6A_4 { Reference "ETSI TS 124 237 [1], Clause 6A.4.3A(1st Numbered list, item 1), Clause 4.2.2" - Config Id CFG_SCCAS_01 + 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 + the UE entity isRegisteredTo the IMS_A and + the UE entity hasInitiatedDialogWith the UE_TERM } Expected behaviour @@ -166,9 +174,9 @@ Package TP_SCCAS_Chapter_6A_4 { from the IMS_S_CSCF entity } then { - the IUT entity sends a r_2xx_Any containing + 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, + To indicating value PX_STNSR_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, //... @@ -230,8 +238,14 @@ Package TP_SCCAS_Chapter_6A_4 { SipMessageBody;; from the IMS_S_CSCF entity } - then { - the IUT entity sends a r_1xx_Any containing + 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, @@ -249,13 +263,13 @@ Package TP_SCCAS_Chapter_6A_4 { 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_01 + 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." diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 index 0ce1be5..7437c8c 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 @@ -178,7 +178,7 @@ Package TP_SCCAS_Chapter_6_3 { Reference "ETSI TS 124 237 [1], Clause 6.3.3" - Config Id CFG_SCCAS_ATCF_01 + Config Id CFG_SCCAS_02 PICS Selection NONE //PS2CSSRVCC @@ -243,7 +243,7 @@ Package TP_SCCAS_Chapter_6_3 { Reference "ETSI TS 124 237 [1], Clause 6.3.3" - Config Id CFG_SCCAS_MSC_01 + Config Id CFG_SCCAS_01 PICS Selection NONE //CS2PSSRVCC -- GitLab From 47c1f18dcafa91bfd68937c4277732af9844356b Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 7 Jun 2022 16:23:31 +0200 Subject: [PATCH 016/202] New resp codes --- test_purposes/Sip_Common.tplan2 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 398f444..d1c3f20 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -29,8 +29,10 @@ Package Sip_Common { - SCCAS - IMS_S_CSCF - UE + - UE_TERM - IUT - ATCF + - MSC ; events: - receives @@ -126,6 +128,7 @@ Package Sip_Common { 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; @@ -163,6 +166,14 @@ Package Sip_Common { 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 -- GitLab From 7042b9077f8b1000228f8dfa4b83442ea0577367 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Tue, 7 Jun 2022 17:14:17 +0200 Subject: [PATCH 017/202] collection informations --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 153 +++++++++++++++++- 1 file changed, 152 insertions(+), 1 deletion(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 2049c1c..58bfe2d 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -308,20 +308,171 @@ Package TP_SCCAS { 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. + + TP Id TP_ICS_SCCAS_XXX_XXX_01 + + Test objective "Verify that the SCC AS " + + } + + + + 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_ICS + + Test objective "" + + + } + + } // 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 prealerting 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" { + + 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_ICS + + Test objective "" + + } + + } // 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" { + // Figure A.15.4-1: + } // 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_ICS_SCCAS_XXX_XXX_01 + + Test objective "Verify that the SCC AS terminates the call over CS after receiving a SIP 488" + + } + + + 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_ICS_SCCAS_XXX_XXX_02 + + Test objective "Verify that the SCC AS sends a SIP PRACK and SIP UPDATE after receiving a SIP 1xx" + + } + } // 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" -- GitLab From 0edf36552df4a14ac7fa112c35769cb76552e448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 8 Jun 2022 09:30:19 +0200 Subject: [PATCH 018/202] new sip message REFER --- test_purposes/Sip_Common.tplan2 | 1 + 1 file changed, 1 insertion(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 398f444..4c02572 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -122,6 +122,7 @@ Package Sip_Common { SipMessage ACK; SipMessage CANCEL; SipMessage BYE; + SipMessage REFER; // SIP Responses SipMessage r_1xx_Any; SipMessage r_100_Trying; -- GitLab From 8fb7ebee3af645dbc036a01a97920ed98f4de47a Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 7 Jun 2022 17:40:03 +0200 Subject: [PATCH 019/202] updated tests --- .../sccas/TP_SCCAS_Chapter_6_3.tplan2 | 41 ++++++++----------- 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 index 7437c8c..8ee1cae 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 @@ -243,7 +243,7 @@ Package TP_SCCAS_Chapter_6_3 { Reference "ETSI TS 124 237 [1], Clause 6.3.3" - Config Id CFG_SCCAS_01 + Config Id CFG_SCCAS_03 PICS Selection NONE //CS2PSSRVCC @@ -255,42 +255,35 @@ Package TP_SCCAS_Chapter_6_3 { ensure that { when { the IUT entity receives a REGISTER containing - From indicating value PX_IMS_S_CSCF_SIP_URI, + 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, - 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;;; + Contact containing + SipInstanceTag, + g3gppIcsiRefTag;; 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, + From indicating value PPX_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 //, + Contact indicating value PX_UE_A_SIP_URI, + AcceptContact containing + g3gppPathMediaFeatureTag //Path indicating value PX_P_CSCF_A_SIP_URI, - //PChargingVector containing - // icid indicating value PX_TO_BE_DEFINED, + PChargingVector indicating value "type 1 orig-ioi", //PVisitedNetworkID indicating value PX_TO_BE_DEFINED, - //Require indicating value "path", + PassertedIdentity indicating value PX_SCCAS_URI //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 - } - + SipMessageBody containing + MIME indicating value "application/vnd.3gpp.srvcc-ext+xml" + + ;;; + to the IMS_S_CSCF entity + } } } // End of TP_ISC_SCCAS_RSC_REG_05 -- GitLab From 1a987e71b3e247436920d563f7c7b883f9a5cf9c Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 7 Jun 2022 18:45:06 +0200 Subject: [PATCH 020/202] updated tests --- .../sccas/TP_SCCAS_Chapter_6_3.tplan2 | 64 ++++++++++++++++--- 1 file changed, 55 insertions(+), 9 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 index 8ee1cae..7a4f416 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 @@ -234,14 +234,65 @@ Package TP_SCCAS_Chapter_6_3 { Group "6.3.4 Triggers for the SCCAS providing information to MSC server"{ - import all from Sip_Common;Test Purpose { + 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.3" + "ETSI TS 124 237 [1], Clause 6.3.4" + + 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 + 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 @@ -266,7 +317,7 @@ Package TP_SCCAS_Chapter_6_3 { } then { the IUT entity sends a r_200_Ok containing - From indicating value PPX_UE_A_SIP_URI, + 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, @@ -286,12 +337,7 @@ Package TP_SCCAS_Chapter_6_3 { } } - } // 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; + } // 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 -- GitLab From 086105d04e62abe375a1f99f63d55c6b2717c39e Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 7 Jun 2022 20:54:27 +0200 Subject: [PATCH 021/202] updated tests --- test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 index 7a4f416..302ddea 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 @@ -330,8 +330,7 @@ Package TP_SCCAS_Chapter_6_3 { PassertedIdentity indicating value PX_SCCAS_URI //Supported indicating value "path" ;; SipMessageBody containing - MIME indicating value "application/vnd.3gpp.srvcc-ext+xml" - + MIME indicating value "application/vnd.3gpp.srvcc-ext+xml" ;;; to the IMS_S_CSCF entity } -- GitLab From 6b35dda022c00acb9a7d7ec5bc9c20255b8e8c4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 8 Jun 2022 11:53:08 +0200 Subject: [PATCH 022/202] update in 9.3.5.4 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 92 ++++++++++++++++++- 1 file changed, 89 insertions(+), 3 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 58bfe2d..acac688 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -280,8 +280,6 @@ Package TP_SCCAS { { - - // 1. the Refer-Sub header field with value "false" as specified in IETF RFC 4488 [20]; // 2. the Supported header field with value "norefersub" as specified in IETF RFC 4488 [20]; // 3. the Refer-To header field containing the information related to the session with an audio media other than the @@ -419,7 +417,95 @@ Package TP_SCCAS { 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" { - // Figure A.15.4-1: + + + import all from Sip_Common; + + Test Purpose { + + TP Id TP_ICS_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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: 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 { + // TODO: Trigger unclear for this refer + 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 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 "TODO: 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 + TODO 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_ICS_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" -- GitLab From d0fef6c36f8483e0da259e3a2e95ee4a525beec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 8 Jun 2022 12:07:55 +0200 Subject: [PATCH 023/202] new SipMessage r_488_NotAcceptableHere --- test_purposes/Sip_Common.tplan2 | 1 + 1 file changed, 1 insertion(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index f705297..7879657 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -136,6 +136,7 @@ Package Sip_Common { SipMessage r_403_Forbidden; SipMessage r_404_NotFound; SipMessage r_486_INVITE; + SipMessage r_488_NotAcceptableHere; SipMessage r_4xx_Any; type SipMessageBody -- GitLab From 98c3ce993d9f428d0c3060324b583b3a1b136997 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 8 Jun 2022 12:20:05 +0200 Subject: [PATCH 024/202] new SipMessage UPDATE and PRACK --- test_purposes/Sip_Common.tplan2 | 1 + 1 file changed, 1 insertion(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 7879657..8a4ff2e 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -125,6 +125,7 @@ Package Sip_Common { SipMessage CANCEL; SipMessage BYE; SipMessage REFER; + SipMessage UPDATE; // SIP Responses SipMessage r_1xx_Any; SipMessage r_100_Trying; -- GitLab From fc7962ed17c315c22fb98542a617f44e4c0487ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 8 Jun 2022 12:23:24 +0200 Subject: [PATCH 025/202] new Sip messages UPDATE and PRACK --- test_purposes/Sip_Common.tplan2 | 1 + 1 file changed, 1 insertion(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 8a4ff2e..eddfe47 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -125,6 +125,7 @@ Package Sip_Common { SipMessage CANCEL; SipMessage BYE; SipMessage REFER; + SipMessage PRACK; SipMessage UPDATE; // SIP Responses SipMessage r_1xx_Any; -- GitLab From a44ac28e3aa04185338cf282cc645d2c62a1813e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 8 Jun 2022 13:40:13 +0200 Subject: [PATCH 026/202] add test puposes --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 56 ++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index acac688..c3a9744 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -536,9 +536,61 @@ Package TP_SCCAS { TP Id TP_ICS_SCCAS_XXX_XXX_01 - Test objective "Verify that the SCC AS terminates the call over CS after receiving a SIP 488" + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // 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 + } + + 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 "TODO: 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 + TODO 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 Test Purpose { -- GitLab From 11ec32b45836fb49052c8d8012edb1889b085179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 8 Jun 2022 13:46:28 +0200 Subject: [PATCH 027/202] add TPs --- test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 1 + 1 file changed, 1 insertion(+) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index c3a9744..99f11e2 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -609,6 +609,7 @@ Package TP_SCCAS { Test objective "Verify that the SCC AS sends a SIP PRACK and SIP UPDATE after receiving a SIP 1xx" + } -- GitLab From 9b9d8b2da657a935d5c174186d894acbef9515ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 8 Jun 2022 17:04:56 +0200 Subject: [PATCH 028/202] add new sip message 480 --- test_purposes/Sip_Common.tplan2 | 1 + 1 file changed, 1 insertion(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index eddfe47..b9b38f6 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -137,6 +137,7 @@ Package Sip_Common { 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; -- GitLab From 84835aa040cc2e157a74460f4ce6e17b5bdef4ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 8 Jun 2022 17:05:19 +0200 Subject: [PATCH 029/202] add test puposes --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 146 ++++++++++++------ 1 file changed, 102 insertions(+), 44 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 99f11e2..1d8f7af 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -534,7 +534,7 @@ Package TP_SCCAS { // - 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_ICS_SCCAS_XXX_XXX_01 + TP Id TP_ICS_SCCAS_PCT_REF_01 Test objective "Verify that the SCC AS terminates the call over CS after receiving a SIP 488" @@ -605,9 +605,59 @@ Package TP_SCCAS { // - 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_ICS_SCCAS_XXX_XXX_02 + TP Id TP_ICS_SCCAS_PCT_XXX_02 - Test objective "Verify that the SCC AS sends a SIP PRACK and SIP UPDATE after receiving a SIP 1xx" + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // 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 + } + + 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 "", // 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 // 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]. + SDP containing + TODO indicating value "TODO"; + ; + ; + to the IMS_S_CSCF entity + } + } } @@ -641,32 +691,37 @@ Package TP_SCCAS { PICS Selection NONE // TODO -// Initial conditions with { -// the UE entity isRegisteredTo the IMS and -// the UE entity hasReceived200OkOnInitialRequestForDialogWith -// } + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO +// // 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 + } // -// 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 + Expected behaviour + ensure that { + when { + the IUT entity receives an ACK + // TODO: trigger for event unclear, transfer of a session is successfully completed + // 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 -// } -// } + 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_ICS_SCCAS_XXX_BYE_01 @@ -691,32 +746,35 @@ Package TP_SCCAS { PICS Selection NONE // TODO -// 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 + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: session is dialog in an early dialog phase on the originating side + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an ACK + + // TODO: trigger for event unclear, transfer of a session is successfully completed + // 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 -// } -// } + 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_ICS_SCCAS_XXX_BYE_02 -- GitLab From c6cc0ca3b529befe49a96fb1de8f857931e95714 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 9 Jun 2022 10:00:51 +0200 Subject: [PATCH 030/202] Update section 9.3.6 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 97 ++++++++----------- 1 file changed, 43 insertions(+), 54 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 1d8f7af..8f9ea36 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -279,25 +279,7 @@ Package TP_SCCAS { Group "9.3.4 SCC AS procedures for CS to PS access transfer with MSC server assisted mid-call feature" { - -// 1. the Refer-Sub header field with value "false" as specified in IETF RFC 4488 [20]; -// 2. the Supported header field with value "norefersub" as specified in IETF RFC 4488 [20]; -// 3. the Refer-To header field containing the information related to the session with an audio media other than the -// session associated with the SIP INVITE request due to static STI, i.e. set to the additional transferred session -// SCC AS URI and the following URI header fields: -// A. the Target-Dialog URI header field populated as specified in IETF RFC 4538 [11], containing the dialog -// identifier of the session with the MSC Server; -// B. the Require URI header field populated with the option tag value "tdialog"; -// C. if the remote UE did not request privacy then the To URI header field populated as specified in -// IETF RFC 3261 [19], containing the P-Asserted-Identity provided by the remote UE during the session -// establishment; -// D. the From URI header field populated as specified in IETF RFC 3261 [19], containing the public user identity -// of the SC UE provided during the session establishment; -// E. the Content-Type URI header field with "application/sdp"; and -// F. the hname "body" URI header field populated with SDP describing the media streams as negotiated in the -// session with the remote UE and with directionality as used by the MSC Server; -// 4. the Content-Type header field with the value set to MIME type specified in the subclause D.1.3; and -// 5. a XML body compliant to the XML schema specified in the subclause D.1.2. + } // end Group 9.3.4 SCC AS procedures for CS to PS access transfer with MSC server assisted mid-call feature @@ -682,7 +664,8 @@ Package TP_SCCAS { // 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 " + 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." @@ -695,8 +678,7 @@ Package TP_SCCAS { the UE entity isRegisteredTo the IMS // TODO // // 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 + } // Expected behaviour @@ -731,13 +713,14 @@ Package TP_SCCAS { Test Purpose { - TP Id TP_ICS_SCCAS_XXX_BYE_02 + TP Id TP_ICS_SCCAS_XXX_YYY_02 // 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 " + 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." @@ -777,20 +760,20 @@ Package TP_SCCAS { } - } // end TP_ICS_SCCAS_XXX_BYE_02 + } // end TP_ICS_SCCAS_XXX_YYY_02 Test Purpose { - TP Id TP_ICS_SCCAS_XXX_BYE_03 + TP Id TP_ICS_SCCAS_MED_RIN_03 // 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 " + 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." @@ -799,35 +782,41 @@ Package TP_SCCAS { PICS Selection NONE // TODO -// 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 -// } -// } + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: + // 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 + + // TODO: trigger for event unclear, transfer of a session is successfully completed + + 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 "TODO: the source access leg contains media components other than speech media component";;; + to the IMS_S_CSCF entity + } + } - } // end TP_ICS_SCCAS_XXX_BYE_03 + } // end TP_ICS_SCCAS_MED_RIN_03 } // end Group "9.3.6 Removal of non-transferred audio media components and release of source access legs" -- GitLab From 5f48e98ebda42a344d97af7f39812e609e0e016d Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 9 Jun 2022 10:05:17 +0200 Subject: [PATCH 031/202] updated tests --- .../sccas/TP_SCCAS_Chapter_7_3.tplan2 | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 index 9af27a6..ec37819 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 @@ -51,15 +51,11 @@ Package TP_SCCAS_Chapter_7_3 { from the IMS_S_CSCF entity } then { - the IUT entity sends a r_183_SessionProgress containing + 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 - //Contact containing - ; + Via indicating value PX_UE_A_VIA; to the IMS_S_CSCF entity } } @@ -74,7 +70,7 @@ Package TP_SCCAS_Chapter_7_3 { TP Id TP_ISC_SCCAS_ORI_INI_02 - Test objective "Verify that the SCCAS sends 2xx response to the SIP INVITE request towards the served user ." + 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" @@ -104,6 +100,34 @@ Package TP_SCCAS_Chapter_7_3 { 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, -- GitLab From 5de9f21e06ac0f4b6a524b317ae09eb7d73afdcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 9 Jun 2022 11:29:03 +0200 Subject: [PATCH 032/202] update section 9.3.5.2 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 62 +++++++++++++++++-- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 8f9ea36..7c698f0 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -319,12 +319,66 @@ Package TP_SCCAS { // 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_ICS_SCCAS_XXX_XXX_01 + TP Id TP_ICS_SCCAS_PCT_UPD_01 - Test objective "Verify that the SCC AS " + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: + // 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_ICS_SCCAS_PCT_UPD_01 @@ -631,7 +685,7 @@ Package TP_SCCAS { 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 "", // 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; + 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 // 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]. SDP containing TODO indicating value "TODO"; -- GitLab From 3db2e58b535f3479ab7282f4c65d35584a516e87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 9 Jun 2022 14:07:38 +0200 Subject: [PATCH 033/202] update section 9.3.5.2 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 45 ++++++++++++++++++- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 7c698f0..77f0be2 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -401,9 +401,50 @@ Package TP_SCCAS { TP Id TP_ICS - Test objective "" - + 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 // TODO + + 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_ICS_SCCAS_PCT_UPD_01 + } + + 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 + } + } } -- GitLab From 66cd4dae03777da8f3c364512590b6b013643d3e Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 9 Jun 2022 14:37:03 +0200 Subject: [PATCH 034/202] updated tests --- test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 index ec37819..1b8605b 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 @@ -21,7 +21,7 @@ Package TP_SCCAS_Chapter_7_3 { import all from Sip_Common; Test Purpose { - TP Id TP_ISC_SCCAS_ORI_INI_01 + TP Id TP_ISC_SCCAS_ORI_INV_01 Test objective "Verify that the SCCAS first receives SIP INVITE request from UE/SCSCF" @@ -59,7 +59,7 @@ Package TP_SCCAS_Chapter_7_3 { to the IMS_S_CSCF entity } } - } // End of TP_ISC_SCCAS_ORI_INI_01 + } // End of TP_ISC_SCCAS_ORI_INV_01 } // end Group "7.3.1 Distinction of requests sent to the SCC AS" @@ -68,7 +68,7 @@ Package TP_SCCAS_Chapter_7_3 { import all from Sip_Common; Test Purpose { - TP Id TP_ISC_SCCAS_ORI_INI_02 + 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 ." @@ -150,7 +150,7 @@ Package TP_SCCAS_Chapter_7_3 { to the IMS_S_CSCF entity } } - } // End of TP_ISC_SCCAS_ORI_INI_02 + } // 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"{ -- GitLab From fef191ef666b1ba384aef0cb6b7866a6ac33eac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 9 Jun 2022 16:46:46 +0200 Subject: [PATCH 035/202] update section 9.3.5.3 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 56 ++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 77f0be2..4549a99 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -415,6 +415,8 @@ Package TP_SCCAS { // 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_ICS_SCCAS_PCT_UPD_01 + // and + // the remote leg is not a precondition enabled dialog } Expected behaviour @@ -453,6 +455,7 @@ Package TP_SCCAS { 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 { @@ -483,9 +486,58 @@ Package TP_SCCAS { // strength-tag value either "optional" or as specified in RFC 3312 [88] and RFC 4032 [89] for the remote // segment. - TP Id TP_ICS + TP Id TP_ICS_SCCAS_PCT_INV_01 - Test objective "" + 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 // TODO + + 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 + } + } } -- GitLab From f54e607dca276b3cc9039d8232e2d6033d1577ba Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 9 Jun 2022 20:33:48 +0200 Subject: [PATCH 036/202] updated tests --- .../sccas/TP_SCCAS_Chapter_8_3.tplan2 | 46 +++++++++++++++++++ .../sccas/TP_SCCAS_Chapter_9_3.tplan2 | 41 +++++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 index 55eb121..13f08ca 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 @@ -19,11 +19,57 @@ 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 7.3.1, 7.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 index 60b67fc..5fcca93 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 @@ -19,6 +19,47 @@ 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"{ -- GitLab From a67fd756176fe2137ea50e3618129cb7fc059c37 Mon Sep 17 00:00:00 2001 From: Rennoch Date: Fri, 10 Jun 2022 09:03:57 +0200 Subject: [PATCH 037/202] new TPs for 10.3 and 11.3 --- .../sccas/TP_SCCAS_Chapter_10_3.tplan2 | 393 ++++++++++++++++++ .../sccas/TP_SCCAS_Chapter_11_3.tplan2 | 164 ++++++++ 2 files changed, 557 insertions(+) create mode 100644 test_purposes/sccas/TP_SCCAS_Chapter_10_3.tplan2 create mode 100644 test_purposes/sccas/TP_SCCAS_Chapter_11_3.tplan2 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 0000000..51f37a8 --- /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 esthablished 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 + + 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 + + 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 esthablished dialog." + + Reference + "ETSI TS 124 237 [1], Clauses 10.3.2" + + 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 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 + + 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 esthablished 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 + + 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 CANDEL 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 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 CANDEL 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 0000000..aa078c5 --- /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 + + 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 + + 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 + + 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 + -- GitLab From 74286aa68a8c8bcaf153d2e7289f5acdf0347b07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Fri, 10 Jun 2022 10:51:28 +0200 Subject: [PATCH 038/202] minor corrections --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 45 +++++++------------ 1 file changed, 15 insertions(+), 30 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 4549a99..be5c44e 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -225,7 +225,7 @@ Package TP_SCCAS { // Test puposes 4: Upon receiving the SIP ACK request originated from the SC UE, the SCC AS shall: Test Purpose { - TP Id TP_SCCAS_CS_to_PS_access_transfer_04 + TP Id TP_ICS_SCCAS_XXX_YYY_04 //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 ... @@ -271,7 +271,7 @@ Package TP_SCCAS { } - } // end TP TP_SCCAS_CS_to_PS_access_transfer_04 + } // end TP TP_ICS_SCCAS_XXX_YYY_04 } // end Group "9.3.3 SCC AS procedures for CS to PS access transfer" @@ -399,7 +399,7 @@ Package TP_SCCAS { // This TP: only case A - TP Id TP_ICS + TP Id TP_ICS_XXX_YYY_02 Test objective "Verify that the SCC AS sends SIP provisional response to the SIP INVITE request due to PS to CS STN" @@ -539,7 +539,7 @@ Package TP_SCCAS { } } - } + } // end TP_ICS_SCCAS_PCT_INV_01 } // 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" @@ -600,12 +600,8 @@ Package TP_SCCAS { ensure that { when { // TODO: Trigger unclear for this refer - 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; + the IUT entity receives an ACK + from the IMS_S_CSCF entity } then { @@ -663,7 +659,7 @@ Package TP_SCCAS { // - 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_ICS_SCCAS_PCT_REF_01 + TP Id TP_ICS_SCCAS_PCT_REF_02 Test objective "Verify that the SCC AS terminates the call over CS after receiving a SIP 488" @@ -719,7 +715,7 @@ Package TP_SCCAS { } } - } // end + } // end TP_ICS_SCCAS_PCT_REF_02 Test Purpose { @@ -781,7 +777,7 @@ Package TP_SCCAS { 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 // 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]. SDP containing - TODO indicating value "TODO"; + Media indicating value "the same media characteristics as received in the SIP 1xx response with the SDP answer"; ; ; to the IMS_S_CSCF entity @@ -789,7 +785,7 @@ Package TP_SCCAS { } - } + } // end TP_ICS_SCCAS_PCT_XXX_02 } // 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" @@ -811,7 +807,7 @@ Package TP_SCCAS { // 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" + 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 @@ -824,21 +820,15 @@ Package TP_SCCAS { Initial conditions with { the UE entity isRegisteredTo the IMS // TODO -// // source access leg is an ongoing session containing only an active or inactive media component + // source access leg is an ongoing session containing only an active or inactive media component } -// + Expected behaviour ensure that { when { the IUT entity receives an ACK // TODO: trigger for event unclear, transfer of a session is successfully completed - -// 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 { @@ -888,11 +878,6 @@ Package TP_SCCAS { // TODO: trigger for event unclear, transfer of a session is successfully completed -// 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 { @@ -914,7 +899,7 @@ Package TP_SCCAS { Test Purpose { - TP Id TP_ICS_SCCAS_MED_RIN_03 + TP Id TP_ICS_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 @@ -963,7 +948,7 @@ Package TP_SCCAS { } - } // end TP_ICS_SCCAS_MED_RIN_03 + } // end TP_ICS_SCCAS_MED_RIN_01 } // end Group "9.3.6 Removal of non-transferred audio media components and release of source access legs" -- GitLab From 70a5dbc67836622a8b8aec446ac8b3e4e788e25d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Mon, 13 Jun 2022 16:02:14 +0200 Subject: [PATCH 039/202] update TPs --- test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index be5c44e..2cda5ea 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -561,7 +561,7 @@ Package TP_SCCAS { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE // TODO Initial conditions with { the UE entity isRegisteredTo the IMS -- GitLab From a58d08fad8681f209c653fb647b3822149065446 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 17 Jun 2022 14:51:34 +0200 Subject: [PATCH 040/202] aded tests --- .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 86 ++++++++++++++++++- 1 file changed, 84 insertions(+), 2 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index 748a3f9..62ed3d9 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -23,12 +23,94 @@ Package TP_SCCAS_Chapter_12_3 { Group "12.3.1 SCC AS procedures for PS to CS access transfer, PS to CS SRVCC"{ - import all from Sip_Common; + 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 //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 } // 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; + import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCCAS_SRA_INV_02 + + 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 //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_02 } // 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"{ -- GitLab From d2eddaf345b71c9ee399afae2fa6991a4afadd51 Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 21 Jun 2022 09:59:31 +0200 Subject: [PATCH 041/202] aded tests --- .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 106 +++++++++++++++++- 1 file changed, 101 insertions(+), 5 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index 62ed3d9..39ae202 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -64,6 +64,51 @@ Package TP_SCCAS_Chapter_12_3 { } } } // End of TP_ISC_SCCAS_SRA_INV_01 + + Test Purpose { + + TP Id TP_ISC_SCCAS_SRA_INI_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 //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"{ @@ -71,7 +116,7 @@ Package TP_SCCAS_Chapter_12_3 { import all from Sip_Common; Test Purpose { - TP Id TP_ISC_SCCAS_SRA_INV_02 + TP Id TP_ISC_SCCAS_SRA_INV_03 Test objective "Verify that the SCCAS distinguish Transfer of first session" @@ -110,19 +155,70 @@ Package TP_SCCAS_Chapter_12_3 { to the IMS_S_CSCF entity } } - } // End of TP_ISC_SCCAS_SRA_INV_02 + } // 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.2.1 General"{ + 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_INI_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 //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"{ + + } + Group "12.3.3.3 P-CSCF releasing the source access leg when call is in alerting phase"{ } - Group "12.3.2.2 Transfer of the first session"{ + Group "12.3.3.4 PS to CS SRVCC cancelled by MME/SGSN or release of the target access leg for an ongoing session"{ } - Group "12.3.2.3 Transfer of an additional session"{ + 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"{ } -- GitLab From c33c278eb0a48d9fe9efafb2f3d0d116015993ed Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 21 Jun 2022 10:02:32 +0200 Subject: [PATCH 042/202] aded tests --- .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index 39ae202..86eb036 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -211,6 +211,46 @@ Package TP_SCCAS_Chapter_12_3 { } 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.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 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_INV_04 + } Group "12.3.3.3 P-CSCF releasing the source access leg when call is in alerting phase"{ -- GitLab From d0babb240804775f61372c3876c1d6b8491c3026 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 23 Jun 2022 07:27:41 +0200 Subject: [PATCH 043/202] TP review based on ETSI TS 124 292 --- test_purposes/Sip_Common.tplan2 | 19 ++++++++++++++++++- test_purposes/ims/TP_SCSCF.tplan2 | 8 ++++---- test_purposes/sccas/TP_SCCAS.tplan2 | 2 +- .../sccas/TP_SCCAS_Chapter_10_3.tplan2 | 10 +++++----- .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 2 +- .../sccas/TP_SCCAS_Chapter_6A_4.tplan2 | 2 +- .../sccas/TP_SCCAS_Chapter_6_3.tplan2 | 2 +- .../sccas/TP_SCCAS_Chapter_7_3.tplan2 | 19 +++++++++++++++---- .../sccas/TP_SCCAS_Chapter_8_3.tplan2 | 4 ++-- .../sccas/TP_SCCAS_Chapter_9_3.tplan2 | 2 +- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 2 +- 11 files changed, 50 insertions(+), 22 deletions(-) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index b9b38f6..68bd735 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -28,6 +28,7 @@ Package Sip_Common { entities: - SCCAS - IMS_S_CSCF + - IMS_I_CSCF - UE - UE_TERM - IUT @@ -38,8 +39,8 @@ Package Sip_Common { - receives - sends - forwards + - isRequestedToPlaceACall // Initial conditions - - isTriggeredToStart - isNotRegisteredTo - hasAchievedFirstRegistration - isRegisteredTo @@ -72,6 +73,8 @@ Package Sip_Common { - hasResponded486INVITE - hasAchievedInitialINVITE - hasAchievedINVITE + - isAttachingToNetwork + - hasDoneSubscription ; } // End of Domain section @@ -101,6 +104,14 @@ Package Sip_Common { // 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 @@ -193,6 +204,12 @@ Package Sip_Common { 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 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); diff --git a/test_purposes/ims/TP_SCSCF.tplan2 b/test_purposes/ims/TP_SCSCF.tplan2 index 21e2b50..adc7535 100644 --- a/test_purposes/ims/TP_SCSCF.tplan2 +++ b/test_purposes/ims/TP_SCSCF.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019-2020. +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 @@ -60,7 +60,7 @@ Package TP_SCSCF { to the IMS_S_CSCF entity } } - } // End of TP_MW_PCSCF_REGISTER_01 + } // End of TP_SCCAS_REGISTER_01 Test Purpose { @@ -111,7 +111,7 @@ Package TP_SCSCF { } } - } // End of TP_MW_PCSCF_INVITE_01 + } // End of TP_SCCAS_INVITE_01 -} // End of Package TP_MW_PS +} // End of Package TP_SCSCF diff --git a/test_purposes/sccas/TP_SCCAS.tplan2 b/test_purposes/sccas/TP_SCCAS.tplan2 index 2d5d6c2..e13d132 100644 --- a/test_purposes/sccas/TP_SCCAS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019-2020. +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 diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_10_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_10_3.tplan2 index 51f37a8..ccf157c 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_10_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_10_3.tplan2 @@ -26,7 +26,7 @@ Package TP_SCCAS { TP Id TP_ISC_SCCAS_PPT_RIN_01 - Test objective "Verify that the SCC AS successfully processes an INVITE on a previously esthablished dialog if the SIP INVITE request contains a Replaces header field." + 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" @@ -110,7 +110,7 @@ Package TP_SCCAS { 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 esthablished dialog." + 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" @@ -199,7 +199,7 @@ Package TP_SCCAS { TP Id TP_ISC_SCCAS_PPT_BYE_01 - Test objective "Verify that the SCC AS successfully processes an BYE on a previously esthablished dialog, if does not receive within this time interval an initial SIP INVITE request." + 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" @@ -262,7 +262,7 @@ Package TP_SCCAS { TP Id TP_ISC_SCCAS_PPT_BYE_02 - Test objective "Verify that the SCC AS successfully processes an CANDEL on a early dialog." + 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" @@ -309,7 +309,7 @@ Package TP_SCCAS { TP Id TP_ISC_SCCAS_PPT_CAN_01 - Test objective "Verify that the SCC AS successfully processes an CANDEL on a early dialog." + 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" diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index 86eb036..0385982 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019-2020. +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 diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 index 54b1aea..89a24a3 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019-2020. +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 diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 index 302ddea..71ecf3a 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019-2020. +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 diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 index 1b8605b..6b59534 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019-2020. +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 @@ -26,7 +26,8 @@ Package TP_SCCAS_Chapter_7_3 { 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 237 [1], Clauses 7.3.1, 7.3.2", + "ETSI TS 124 292 [1], Clauses 7.4.2" Config Id CFG_SCCAS_01 @@ -45,7 +46,11 @@ Package TP_SCCAS_Chapter_7_3 { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value "sccas as topmost entry", - Contact, + 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 @@ -73,7 +78,8 @@ Package TP_SCCAS_Chapter_7_3 { 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 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 @@ -91,6 +97,11 @@ Package TP_SCCAS_Chapter_7_3 { 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 diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 index 13f08ca..38d2227 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019-2020. +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 @@ -27,7 +27,7 @@ Package TP_SCCAS_Chapter_8_3 { Test objective "Verify that the SCCAS last receives SIP INVITE request from UE/SCSCF" Reference - "ETSI TS 124 237 [1], Clauses 7.3.1, 7.3.2" + "ETSI TS 124 237 [1], Clauses 8.3.1, 8.3.2" Config Id CFG_SCCAS_01 diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 index 5fcca93..a94e515 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019-2020. +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 diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 2cda5ea..9e82321 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019-2020. +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 -- GitLab From cc733eeec905e35660499493effffa6025452932 Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 23 Jun 2022 09:41:50 +0200 Subject: [PATCH 044/202] aded tests --- .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 97 ++++++++++++++++++- 1 file changed, 94 insertions(+), 3 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index 86eb036..065f9c6 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -161,7 +161,7 @@ Package TP_SCCAS_Chapter_12_3 { Group "12.3.3 SCC AS procedures for PS to CS SRVCC, abnormal case"{ - import all from Sip_Common; + //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; @@ -219,7 +219,7 @@ Package TP_SCCAS_Chapter_12_3 { 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" + "ETSI TS 124 237 [1], Clause 12.3.3.2" Config Id CFG_SCCAS_01 @@ -249,7 +249,7 @@ Package TP_SCCAS_Chapter_12_3 { } } - } // End of TP_ISC_SCCAS_SRA_INV_04 + } // 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"{ @@ -257,7 +257,98 @@ Package TP_SCCAS_Chapter_12_3 { } 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 //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 + 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 diferent from Cause Q850 31" + + Reference + "ETSI TS 124 237 [1], Clause 12.3.3.4" + + 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 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"{ } -- GitLab From 60956e4c6dcd97330b06a94df224ed7ea103bbc6 Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 23 Jun 2022 09:42:09 +0200 Subject: [PATCH 045/202] aded tests --- test_purposes/Sip_Common.tplan2 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index b9b38f6..597993e 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -72,9 +72,11 @@ Package Sip_Common { - hasResponded486INVITE - hasAchievedInitialINVITE - hasAchievedINVITE + - timerOperatorSpecificTimeout //NOTE: 8 seconds is an appropriate value for the operator policy. ; } // End of Domain section + // Const { // PX_Stored_Domain_Uri, // PX_Affected_IMPU, @@ -106,6 +108,7 @@ Package Sip_Common { // } // End of Const section Data { + type SipMessage; type EnumMessage; -- GitLab From d3fa0ab54e43f59daee441fd2c6c61b7843d5e77 Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 27 Jun 2022 15:42:03 +0200 Subject: [PATCH 046/202] updated TPs --- .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 61 ++++++++++++++++++- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index 7f15fa4..e6d8090 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -273,7 +273,8 @@ Package TP_SCCAS_Chapter_12_3 { Initial conditions with { the UE entity isRegisteredTo the IMS_A and - the UE entity hasEstablishedDialog the SCCAS_UE_TERM + the UE entity hasEstablishedDialog the SCCAS_UE_TERM and + the UE entity hasEstablishedPS2CSDialog } Expected behaviour @@ -306,7 +307,7 @@ Package TP_SCCAS_Chapter_12_3 { 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 diferent from Cause Q850 31" + 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" @@ -317,7 +318,8 @@ Package TP_SCCAS_Chapter_12_3 { Initial conditions with { the UE entity isRegisteredTo the IMS_A and - the UE entity hasEstablishedDialog the SCCAS_UE_TERM + the UE entity hasEstablishedDialog the SCCAS_UE_TERM and + the UE entity hasEstablishedPS2CSDialog } Expected behaviour @@ -351,6 +353,59 @@ Package TP_SCCAS_Chapter_12_3 { 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_CNL_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" + + 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 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_CNL_01 + } + Group "12.3.3.5.2 SCC AS serving a terminating user"{ + + } + } } // end Group "12.3.3 SCC AS procedures for PS to CS SRVCC, abnormal case" -- GitLab From 7241a7a24563d1d52ba1a966c9f34bf58f32e1a3 Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 27 Jun 2022 15:42:21 +0200 Subject: [PATCH 047/202] updated TPs --- test_purposes/Sip_Common.tplan2 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 2410dc5..0e476f1 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -53,7 +53,9 @@ Package Sip_Common { - registeredIdentityTelURI - registeredIdentitySipURI - hasInitiatedDialogWith + - hasInitiatedPS2CSinEarlydialog - hasEstablishedDialog + - hasEstablishedPS2CSDialog - isConfiguredWithENUMentryForTelURI_E164NumberOf - hasReceivedInitialRequestForDialog - hasReceived200OkOnInitialRequestForDialogWith -- GitLab From 43aec44a21bfa08e7e536bc162b7f292b91b7a43 Mon Sep 17 00:00:00 2001 From: pintar Date: Thu, 25 Aug 2022 09:41:55 +0200 Subject: [PATCH 048/202] New AtsSccas modules added --- ttcn/AtsSccas/AtsSccas_PICS.ttcn | 21 ++ ttcn/AtsSccas/AtsSccas_PIXITS.ttcn | 21 ++ ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 62 ++++ ttcn/AtsSccas/AtsSccas_Templates.ttcn | 32 ++ ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn | 306 ++++++++++++++++++ ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn | 10 + ttcn/AtsSccas/AtsSccas_TestSystem.ttcn | 59 ++++ ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 50 +++ 8 files changed, 561 insertions(+) create mode 100644 ttcn/AtsSccas/AtsSccas_PICS.ttcn create mode 100644 ttcn/AtsSccas/AtsSccas_PIXITS.ttcn create mode 100644 ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn create mode 100644 ttcn/AtsSccas/AtsSccas_Templates.ttcn create mode 100644 ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn create mode 100644 ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn create mode 100644 ttcn/AtsSccas/AtsSccas_TestSystem.ttcn create mode 100644 ttcn/AtsSccas/AtsSccas_Testcases.ttcn diff --git a/ttcn/AtsSccas/AtsSccas_PICS.ttcn b/ttcn/AtsSccas/AtsSccas_PICS.ttcn new file mode 100644 index 0000000..327a929 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_PICS.ttcn @@ -0,0 +1,21 @@ +/* + *@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 boolean PICS ref: A-3/5 + True, if SUT/SCSCF requires ... + */ + boolean PC_SCCAS_TODO := false; + +} +} // end module AtsSccas_PICS diff --git a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn new file mode 100644 index 0000000..2fe4084 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn @@ -0,0 +1,21 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides the PIXIT used for the SIP-IMS tests. + */ + +module AtsSccas_PIXITS +{ + + +// SUT specific implementation variants + +modulepar { + + /** @desc boolean for SUT working mode due to + */ + boolean PX_SCCAS__ := true; + +} + +} // end module AtsSccas_PIXITS diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn new file mode 100644 index 0000000..e966274 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -0,0 +1,62 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides the TCfunctions used by the test component + * for SCCAS tests. + */ +module AtsSccas_TCFunctions { + // 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; + + // AtsIms + // import from AtsIms_TestSystem all; + import from AtsSccas_PICS all; + import from AtsSccas_PIXITS all; + + + group Group_6_3 { + group TP_6_3_1_General { + + /* + * @desc This is the test case function for TC_ISC_SCCAS_RSC_REG_01 + * @param p_cSeq_s + */ + function f_TC_ISC_SCCAS_RSC_REG_01(in CSeq p_cSeq_s) + runs on ImsComponent { + + var template REGISTER_Request v_register; + + 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 function f_TC_ISC_SCCAS_RSC_REG_01 + + }//group TP_6_3_1_General + + }//Group_6_3 +} // end module AtsSccas_TCFunctions \ 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 0000000..6ef8091 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -0,0 +1,32 @@ +/* + * @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_Templates all; + + group HeaderTemplates + { + + + }//end group HeaderTemplates + + group MessageTemplates { + group modified_templates { + group request_sent { + + + }//end group request_sent + + group request_receive { + }//end group request_receive + }//end group modified_templates + }//end group MessageTemplates + +} // end 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 0000000..515b54b --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn @@ -0,0 +1,306 @@ +/* + * @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) + runs on ServerSyncComp + { 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_TestExecutions.ttcn b/ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn new file mode 100644 index 0000000..6d24f1d --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn @@ -0,0 +1,10 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc + */ + +module AtsSccas_TestExecutions +{ + +} // end module AtsSccas_TestExecutions diff --git a/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn b/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn new file mode 100644 index 0000000..6a0d31e --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn @@ -0,0 +1,59 @@ +/* + * @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; + } + } // 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 0000000..fdcdac2 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -0,0 +1,50 @@ +/* + * @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 TC_IMST2_GM_GEN_01 + * @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; + 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 TC_ISC_SCCAS_RSC_REG_01 + }//group TP_6_3_1_General + + }//Group_6_3 + +} // end module AtsSccas_Testcases -- GitLab From 545050dbd725e99b2c94d79d5727597b5f7ac400 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Thu, 25 Aug 2022 14:09:17 +0200 Subject: [PATCH 049/202] Add required submodules --- .gitmodules | 12 ++++++++++++ ttcn/LibCommon | 1 + ttcn/LibIms | 1 + ttcn/LibSip | 1 + 4 files changed, 15 insertions(+) create mode 100644 .gitmodules create mode 160000 ttcn/LibCommon create mode 160000 ttcn/LibIms create mode 160000 ttcn/LibSip diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..0199d02 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,12 @@ +[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 diff --git a/ttcn/LibCommon b/ttcn/LibCommon new file mode 160000 index 0000000..22cc04e --- /dev/null +++ b/ttcn/LibCommon @@ -0,0 +1 @@ +Subproject commit 22cc04e32b0e37f70a7df30df12727a6546e2916 diff --git a/ttcn/LibIms b/ttcn/LibIms new file mode 160000 index 0000000..d640fce --- /dev/null +++ b/ttcn/LibIms @@ -0,0 +1 @@ +Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 diff --git a/ttcn/LibSip b/ttcn/LibSip new file mode 160000 index 0000000..7d79616 --- /dev/null +++ b/ttcn/LibSip @@ -0,0 +1 @@ +Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d -- GitLab From 2941e595aee22f1a56fcadd13cc32b26c54c0603 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Mon, 29 Aug 2022 07:47:21 +0200 Subject: [PATCH 050/202] Add module AtsSccas_Testcases_TS124292.ttcn --- .../AtsSccas/AtsSccas_Testcases_TS124292.ttcn | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn diff --git a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn new file mode 100644 index 0000000..796c144 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn @@ -0,0 +1,49 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides the Test Cases for SCCAS ETSI TS 124 292 v1.6.0. + */ + +module AtsSccas_TS124292_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 isc_registration { + + /* + * @desc TC_IMST2_GM_GEN_01 + * @param p_cSeq_s Transaction Id + */ + testcase TC_ISC_SCCAS_MSC_REG_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + 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 + + } // End of isc_registration + +} // End of module AtsSccas_TS124292_Testcases -- GitLab From 65d29a8c21da840114c973a13fefbf71033a8fc4 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Mon, 29 Aug 2022 07:54:04 +0200 Subject: [PATCH 051/202] Add module AtsSccas_Testcases_TS124292.ttcn --- .../AtsSccas_TCFunctions_TS124292.ttcn | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn new file mode 100644 index 0000000..875e508 --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -0,0 +1,59 @@ +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides the TCfunctions used by the test component + * for SCCAS tests. + */ +module AtsSccas_TCFunctions { + // 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; + + // AtsIms + // import from AtsIms_TestSystem 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 { + + var template REGISTER_Request v_register; + + 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_RSC_REG_01 + + } // End of group isc_registration + +} // End of module AtsSccas_TCFunctions \ No newline at end of file -- GitLab From 656dbf3a33e37ddf535003b07ec15c375cfe1bc8 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Mon, 29 Aug 2022 08:02:27 +0200 Subject: [PATCH 052/202] Reorganize modules --- ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn | 7 +++---- ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn | 10 ++++------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn index 875e508..2e27965 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -4,7 +4,7 @@ * @desc This module provides the TCfunctions used by the test component * for SCCAS tests. */ -module AtsSccas_TCFunctions { +module AtsSccas_TCFunctions_TS124292 { // LibCommon import from LibCommon_Sync all; import from LibCommon_VerdictControl all; @@ -27,11 +27,10 @@ module AtsSccas_TCFunctions { 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 + * @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 { @@ -56,4 +55,4 @@ module AtsSccas_TCFunctions { } // End of group isc_registration -} // End of module AtsSccas_TCFunctions \ No newline at end of file +} // End of module AtsSccas_TCFunctions_TS124292 \ No newline at end of file diff --git a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn index 796c144..b52e680 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn @@ -4,7 +4,7 @@ * @desc This module provides the Test Cases for SCCAS ETSI TS 124 292 v1.6.0. */ -module AtsSccas_TS124292_Testcases +module AtsSccas_Testcases_TS124292 { //LibCommon import from LibCommon_Sync all ; @@ -24,12 +24,10 @@ module AtsSccas_TS124292_Testcases group isc_registration { /* - * @desc TC_IMST2_GM_GEN_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_01(inout CSeq p_cSeq_s) - runs on ServerSyncComp - system TestAdapter { + testcase TC_ISC_SCCAS_MSC_REG_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { //Variables var ImsComponent v_imsComponent_ueims; f_cf_1IscUp(v_imsComponent_ueims); @@ -46,4 +44,4 @@ module AtsSccas_TS124292_Testcases } // End of isc_registration -} // End of module AtsSccas_TS124292_Testcases +} // End of module AtsSccas_Testcases_TS124292 -- GitLab From 2ba45bfb69405605ba79792df0534e90db7ef57a Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Mon, 29 Aug 2022 08:45:38 +0200 Subject: [PATCH 053/202] Add testcase templates for the MSC modules --- .../AtsSccas_TCFunctions_TS124292.ttcn | 216 ++++++++++++++++- .../AtsSccas/AtsSccas_Testcases_TS124292.ttcn | 219 +++++++++++++++++- 2 files changed, 424 insertions(+), 11 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn index 2e27965..fce3f42 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -34,25 +34,229 @@ module AtsSccas_TCFunctions_TS124292 { * @param p_cSeq_s */ function f_TC_ISC_SCCAS_MSC_REG_01(in CSeq p_cSeq_s) runs on ImsComponent { - + // Local variables var template REGISTER_Request v_register; - 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)); - + // 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 + // Deregistration f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_RSC_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 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_RSC_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 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_RSC_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 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_RSC_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_RSC_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_RSC_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 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_RSC_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 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_RSC_CALL_ORG_02 + + } // End of call_origination + } // End of module AtsSccas_TCFunctions_TS124292 \ No newline at end of file diff --git a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn index b52e680..428ac5c 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn @@ -18,7 +18,7 @@ module AtsSccas_Testcases_TS124292 //AtsIms import from AtsSccas_TestConfiguration all; import from AtsSccas_TestSystem all; - import from AtsSccas_TCFunctions all; + import from AtsSccas_TCFunctions_TS124292 all; import from AtsSccas_PICS all; group isc_registration { @@ -28,20 +28,229 @@ module AtsSccas_Testcases_TS124292 * @param p_cSeq_s Transaction Id */ testcase TC_ISC_SCCAS_MSC_REG_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { - //Variables + // Local variables var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_MSC_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration f_cf_1IscUp(v_imsComponent_ueims); - //Start + // 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 + // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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 -- GitLab From c679227fa5677709ad69d65f69935820302d3792 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Mon, 29 Aug 2022 11:35:29 +0200 Subject: [PATCH 054/202] Add PICS for module MSC --- ttcn/AtsSccas/AtsSccas_PICS.ttcn | 1 + .../AtsSccas_TCFunctions_TS124292.ttcn | 542 +++++++++--------- .../AtsSccas/AtsSccas_Testcases_TS124292.ttcn | 2 +- 3 files changed, 283 insertions(+), 262 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_PICS.ttcn b/ttcn/AtsSccas/AtsSccas_PICS.ttcn index 327a929..a5921e7 100644 --- a/ttcn/AtsSccas/AtsSccas_PICS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PICS.ttcn @@ -17,5 +17,6 @@ PICS used for test case selection */ boolean PC_SCCAS_TODO := false; + boolean PICS_MSC_GM := false; } } // end module AtsSccas_PICS diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn index fce3f42..0830d04 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -1,262 +1,282 @@ -/* - * @author TTF T016 - * @version $Id$ - * @desc This module provides the TCfunctions used by the test component - * for SCCAS tests. - */ -module AtsSccas_TCFunctions_TS124292 { - // 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; - - // AtsIms - // import from AtsIms_TestSystem 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 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_RSC_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 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_RSC_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 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_RSC_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 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_RSC_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_RSC_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_RSC_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 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_RSC_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 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_RSC_CALL_ORG_02 - - } // End of call_origination - +/* + * @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_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 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_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 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_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_register := 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_register := 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_register := 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_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_CALL_ORG_02 + + } // End of call_origination + } // End of module AtsSccas_TCFunctions_TS124292 \ No newline at end of file diff --git a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn index 428ac5c..b1fca4e 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn @@ -15,7 +15,7 @@ module AtsSccas_Testcases_TS124292 //LibIms import from LibIms_SIPTypesAndValues all; import from LibIms_Interface all; - //AtsIms + //AtsSccas import from AtsSccas_TestConfiguration all; import from AtsSccas_TestSystem all; import from AtsSccas_TCFunctions_TS124292 all; -- GitLab From d10e28ccc39094160a52e5981dcdabb3c2bcbb09 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Mon, 29 Aug 2022 11:39:16 +0200 Subject: [PATCH 055/202] Add PICS for module MSC --- ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn index 0830d04..71a7657 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -105,7 +105,7 @@ module AtsSccas_TCFunctions_TS124292 { var template SUBSCRIBE_Request v_subscibe; // Preambule - v_register := valueof( + v_subscibe := valueof( m_SUBSCRIBE_Request_Base( vc_requestUri, vc_callId, @@ -133,7 +133,7 @@ module AtsSccas_TCFunctions_TS124292 { var template SUBSCRIBE_Request v_subscibe; // Preambule - v_register := valueof( + v_subscibe := valueof( m_SUBSCRIBE_Request_Base( vc_requestUri, vc_callId, @@ -228,7 +228,7 @@ module AtsSccas_TCFunctions_TS124292 { 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_register := valueof( + v_invite := valueof( m_INVITE_Request_sdp( vc_requestUri, vc_callId, @@ -259,12 +259,12 @@ module AtsSccas_TCFunctions_TS124292 { var template INVITE_Request v_invite; // Preambule - v_register := valueof( + /*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 -- GitLab From 48e728f80bf1e127bc3424c2fbc42b08e4814d61 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Mon, 29 Aug 2022 12:26:54 +0200 Subject: [PATCH 056/202] Groups added --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 19 +++++++++++++++++++ ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index e966274..f3bdf93 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -59,4 +59,23 @@ module AtsSccas_TCFunctions { }//group TP_6_3_1_General }//Group_6_3 + + group Group_6A_4 { + }//Group_6A_4 + + group Group_7_3 { + }//Group_7_3 + + group Group_8_3 { + }//Group_8_3 + + group Group_9_3 { + }//Group_9_3 + + group Group_10_3 { + }//Group_10_3 + + group Group_11_3 { + }//Group_11_3 + } // end module AtsSccas_TCFunctions \ No newline at end of file diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index fdcdac2..ed84c62 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -46,5 +46,24 @@ module AtsSccas_Testcases }//group TP_6_3_1_General }//Group_6_3 + + group Group_6A_4 { + }//Group_6A_4 + + group Group_7_3 { + }//Group_7_3 + + group Group_8_3 { + }//Group_8_3 + + group Group_9_3 { + }//Group_9_3 + + group Group_10_3 { + }//Group_10_3 + + group Group_11_3 { + }//Group_11_3 + } // end module AtsSccas_Testcases -- GitLab From f9c0f04a858d7b7073a2c0e5687945d184265bb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Mon, 29 Aug 2022 14:54:06 +0200 Subject: [PATCH 057/202] rename test purposes --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 9e82321..a5e0abc 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -85,7 +85,7 @@ Package TP_SCCAS { } } - } // end TP TP_SCCAS_CS_to_PS_access_transfer_01 + } // 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: @@ -153,7 +153,7 @@ Package TP_SCCAS { } } - } // end TP_SCCAS_CS_to_PS_access_transfer_02 + } // 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 @@ -219,13 +219,13 @@ Package TP_SCCAS { } } - } // end TP_SCCAS_CS_to_PS_access_transfer_03 + } // 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_ICS_SCCAS_XXX_YYY_04 + 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 ... @@ -271,7 +271,7 @@ Package TP_SCCAS { } - } // end TP TP_ICS_SCCAS_XXX_YYY_04 + } // end TP TP_ISC_SCCAS_CPT_ACK_01 } // end Group "9.3.3 SCC AS procedures for CS to PS access transfer" @@ -322,7 +322,7 @@ Package TP_SCCAS { // this TP: only case A - TP Id TP_ICS_SCCAS_PCT_UPD_01 + 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" @@ -378,7 +378,7 @@ Package TP_SCCAS { } } - } // end TP_ICS_SCCAS_PCT_UPD_01 + } // end TP_ISC_SCCAS_PCT_UPD_01 @@ -399,7 +399,7 @@ Package TP_SCCAS { // This TP: only case A - TP Id TP_ICS_XXX_YYY_02 + TP Id TP_ISC_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" @@ -414,7 +414,7 @@ Package TP_SCCAS { 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_ICS_SCCAS_PCT_UPD_01 + // 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 } @@ -447,7 +447,7 @@ Package TP_SCCAS { to the IMS_S_CSCF entity } } - } + } // end TP TP_ISC_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" @@ -486,7 +486,7 @@ Package TP_SCCAS { // strength-tag value either "optional" or as specified in RFC 3312 [88] and RFC 4032 [89] for the remote // segment. - TP Id TP_ICS_SCCAS_PCT_INV_01 + TP Id TP_ISC_SCCAS_PCT_INV_01 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" @@ -539,7 +539,7 @@ Package TP_SCCAS { } } - } // end TP_ICS_SCCAS_PCT_INV_01 + } // end TP_ISC_SCCAS_PCT_INV_01 } // 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" @@ -552,7 +552,7 @@ Package TP_SCCAS { Test Purpose { - TP Id TP_ICS_SCCAS_PCT_REF_01 + 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" @@ -630,7 +630,7 @@ Package TP_SCCAS { } } - } // end TP_ICS_SCCAS_PCT_REF_01 + } // 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" @@ -659,7 +659,7 @@ Package TP_SCCAS { // - 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_ICS_SCCAS_PCT_REF_02 + TP Id TP_ISC_SCCAS_PCT_REF_01 Test objective "Verify that the SCC AS terminates the call over CS after receiving a SIP 488" @@ -715,7 +715,7 @@ Package TP_SCCAS { } } - } // end TP_ICS_SCCAS_PCT_REF_02 + } // end TP_ISC_SCCAS_PCT_REF_02 Test Purpose { @@ -730,7 +730,7 @@ Package TP_SCCAS { // - 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_ICS_SCCAS_PCT_XXX_02 + 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" @@ -785,7 +785,7 @@ Package TP_SCCAS { } - } // end TP_ICS_SCCAS_PCT_XXX_02 + } // 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" @@ -800,7 +800,7 @@ Package TP_SCCAS { Test Purpose { - TP Id TP_ICS_SCCAS_XXX_BYE_01 + 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 @@ -843,14 +843,14 @@ Package TP_SCCAS { } - } // end TP_ICS_SCCAS_XXX_BYE_01 + } // end TP_ISC_SCCAS_MED_BYE_01 Test Purpose { - TP Id TP_ICS_SCCAS_XXX_YYY_02 + 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) @@ -892,14 +892,14 @@ Package TP_SCCAS { } - } // end TP_ICS_SCCAS_XXX_YYY_02 + } // end TP_ISC_SCCAS_MED_RES_01 Test Purpose { - TP Id TP_ICS_SCCAS_MED_RIN_01 + 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 @@ -948,7 +948,7 @@ Package TP_SCCAS { } - } // end TP_ICS_SCCAS_MED_RIN_01 + } // 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" -- GitLab From e932b5ba8a245d63143da666bb2a035855b02bcf Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Mon, 29 Aug 2022 15:01:51 +0200 Subject: [PATCH 058/202] Add AtsSccas_Steps.ttcn module and update PIXITs --- ttcn/AtsSccas/AtsSccas_PIXITS.ttcn | 363 +++++++++++++++++++++++++++++ ttcn/AtsSccas/AtsSccas_Steps.ttcn | 351 ++++++++++++++++++++++++++++ 2 files changed, 714 insertions(+) create mode 100644 ttcn/AtsSccas/AtsSccas_Steps.ttcn diff --git a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn index 2fe4084..9e69710 100644 --- a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn @@ -18,4 +18,367 @@ modulepar { } + group SUT { + + group SUT_UE { + /** @desc charstring for SUT - UE IP address to exchange SIP messages - connection point for PCSCF + */ + modulepar charstring PX_IMS_SUT_UE_IPADDR := "10.100.0.6"; + + /** @desc integer for SUT - UE port number to exchange SIP messages - connection point for PCSCF + */ + modulepar integer PX_IMS_SUT_UE_PORT := 5060; + } // End of group SUT_UE1 + + group SUT_UE1 { + /** @desc charstring for SUT - PCSCF1 IP address to exchange SIP messages - connection point for UE1 + */ + modulepar charstring PX_IMS_SUT_PCSCF1_IPADDR := "10.100.0.6"; + + /** @desc integer for SUT - PCSCF1 port number to exchange SIP messages - connection point for UE1 + */ + modulepar integer PX_IMS_SUT_PCSCF1_PORT := 5060; + + /** @desc charstring for SUT/PCSCF1 domain - connection point for UE1 + */ + modulepar charstring PX_IMS_SUT_PCSCF1_HOME_DOMAIN := "plugtests.net"; + + /** @desc charstring for IP address used by the TS to exchange media streams for UE1 + */ + modulepar charstring PX_IMS_SUT_UE1_BEARER_IPADDR := "conftest.plugtests.net"; + + /** @desc charstring for identity of the tester UE1 local domain + */ + modulepar charstring PX_IMS_SUT_UE1_HOME_DOMAIN := "plugtests.net"; + + /** @desc charstring for identity of the tester UE1 local user + */ + modulepar charstring PX_IMS_SUT_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_SUT_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_SUT_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_SUT_UE1_QOP := "auth"; + + /** @desc charstring for home(SUT) REGISTRAR domain of UE1 + */ + modulepar charstring PX_IMS_SUT_UE1_REGISTRAR := "registrar.sut.net"; + + /** @desc charstring for UE1 display name + */ + modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "alice-05@plugtest.net"; + } // End of group SUT_UE1 + + group SUT_UE2 { + /** @desc charstring for SUT - PCSCF2 IP address to exchange SIP messages - connection point for UE2 + */ + modulepar charstring PX_IMS_SUT_PCSCF2_IPADDR := "esrp1.frequentis.plugtests.net"; + + /** @desc integer for SUT - PCSCF2 port number to exchange SIP messages - connection point for UE2 + */ + modulepar integer PX_IMS_SUT_PCSCF2_PORT := 5060; + + /** @desc charstring for SUT/PCSCF2 domain - connection point for UE2 + */ + modulepar charstring PX_IMS_SUT_PCSCF2_HOME_DOMAIN := "plugtests.net"; + + /** @desc charstring for IP address used by the TS to exchange media streams for UE2 + */ + modulepar charstring PX_IMS_SUT_UE2_BEARER_IPADDR := "esrp1.frequentis.plugtests.net"; + + /** @desc charstring for identity of the tester UE2 local domain + */ + modulepar charstring PX_IMS_SUT_UE2_HOME_DOMAIN := "plugtests.net"; + + /** @desc charstring for identity of the tester UE2 local user + */ + modulepar charstring PX_IMS_SUT_UE2_PUBLIC_USER := "2910"; + + /** @desc charstring for RFC 2617 clause 3-2-2 username of UE2: + * The name of user in the specified realm + */ + modulepar charstring PX_IMS_SUT_UE2_PRIVAT_USERNAME := "abcd"; + + /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2 + */ + modulepar charstring PX_IMS_SUT_UE2_PRIVAT_PASSWD := "1234"; + + /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE2: + * 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_SUT_UE2_QOP := "auth"; + + /** @desc charstring for home(SUT) REGISTRAR domain of UE2 + */ + modulepar charstring PX_IMS_SUT_UE2_REGISTRAR := "plugtests.net"; + } // End of group SUT_UE2 + + group SUT_UE3 { + /** @desc charstring for SUT - PCSCF3 IP address to exchange SIP messages - connection point for UE3 + */ + modulepar charstring PX_IMS_SUT_PCSCF3_IPADDR := "172.31.10.2"; + + /** @desc integer for SUT - PCSCF3 port number to exchange SIP messages - connection point for UE3 + */ + modulepar integer PX_IMS_SUT_PCSCF3_PORT := 5060; + + /** @desc charstring for SUT/PCSCF3 domain - connection point for UE3 + */ + modulepar charstring PX_IMS_SUT_PCSCF3_HOME_DOMAIN := "pcscf3.home.net"; + + /** @desc charstring for IP address used by the TS to exchange media streams for UE3 + */ + modulepar charstring PX_IMS_SUT_UE3_BEARER_IPADDR := "172.31.10.2"; + + /** @desc charstring for identity of the tester UE2 local domain + */ + modulepar charstring PX_IMS_SUT_UE3_HOME_DOMAIN := "sut.net"; + + /** @desc charstring for identity of the tester UE3 local user + */ + modulepar charstring PX_IMS_SUT_UE3_PUBLIC_USER := "2910"; + + /** @desc charstring for RFC 2617 clause 3-2-2 username of UE3: + * The name of user in the specified realm + */ + modulepar charstring PX_IMS_SUT_UE3_PRIVAT_USERNAME := "abcd"; + + /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE3 + */ + modulepar charstring PX_IMS_SUT_UE3_PRIVAT_PASSWD := "1234"; + + /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE3: + * 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_SUT_UE3_QOP := "auth"; + + /** @desc charstring for home(SUT) REGISTRAR domain of UE3 + */ + modulepar charstring PX_IMS_SUT_UE3_REGISTRAR := "registrar.sut.net"; + } // End of group SUT_UE3 + + group SUT_UE4 {//UE4 can be used as UE1Visited + /** @desc charstring for SUT - PCSCF4 IP address to exchange SIP messages - connection point for UE4 + */ + modulepar charstring PX_IMS_SUT_PCSCF4_IPADDR := "172.31.10.2"; + + /** @desc integer for SUT - PCSCF4 port number to exchange SIP messages - connection point for UE4 + */ + modulepar integer PX_IMS_SUT_PCSCF4_PORT := 5060; + + /** @desc charstring for SUT/PCSCF4 domain - connection point for UE4 + */ + modulepar charstring PX_IMS_SUT_PCSCF4_HOME_DOMAIN := "pcscf4.home.net"; + + /** @desc charstring for IP address used by the TS to exchange media streams for UE4 + */ + modulepar charstring PX_IMS_SUT_UE4_BEARER_IPADDR := "172.31.10.2"; + + /** @desc charstring for identity of the tester UE2 local domain + */ + modulepar charstring PX_IMS_SUT_UE4_HOME_DOMAIN := "sut.net"; + + /** @desc charstring for identity of the tester UE4 local user + */ + modulepar charstring PX_IMS_SUT_UE4_PUBLIC_USER := "2910"; + + /** @desc charstring for RFC 2617 clause 3-2-2 username of UE4: + * The name of user in the specified realm + */ + modulepar charstring PX_IMS_SUT_UE4_PRIVAT_USERNAME := "abcd"; + + /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2 + */ + modulepar charstring PX_IMS_SUT_UE4_PRIVAT_PASSWD := "1234"; + + /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE4: + * 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_SUT_UE4_QOP := "auth"; + + /** @desc charstring for home(SUT) REGISTRAR domain of UE4 + */ + modulepar charstring PX_IMS_SUT_UE4_REGISTRAR := "registrar.sut.net"; + } // End of group SUT_UE4 + + group SUT_unknown { + /** @desc charstring for identity of unknown UE public user + */ + modulepar charstring PX_IMS_SUT_unknownUE_PUBLIC_USER := "0007"; + } // End of group SUT_unknown + + group EMERGENCY{ + /** @desc charstring for identity of emergency service local domain + */ + modulepar charstring PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "plugtests.net"; + + /** @desc charstring for identity of the emergency service + */ + modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE := "112"; + + /** @desc charstring for identity of the invalid emergency service + */ + modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_INVALID := "service.sos.invalid"; + } // End of group EMERGENCY service + + group SUT_IBCF { + /** @desc charstring for SUT/IBCF1 IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_IBCF1_IPADDR := "172.31.10.5"; + + /** @desc integer for SUT/IBCF1 port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_IBCF1_PORT := 5060; + + /** @desc charstring for SUT/IBCF1 domain + */ + modulepar charstring PX_IMS_SUT_IBCF1_HOME_DOMAIN := "ibcf1.sut.net"; + + /** @desc charstring for SUT/IBCF2 IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_IBCF2_IPADDR := "172.31.10.6"; + + /** @desc integer for SUT/IBCF2 port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_IBCF2_PORT := 5060; + + /** @desc charstring for SUT/IBCF2 domain + */ + modulepar charstring PX_IMS_SUT_IBCF2_HOME_DOMAIN := "ibcf2.sut.net"; + } // End of group SUT_IBCF + + group SUT_PCSCF { + /** @desc charstring for SUT/P-CSCF IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_PCSCF_IPADDR := "172.31.10.2"; + + /** @desc integer for SUT/P-CSCF port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_PCSCF_PORT := 5060; + + /** @desc charstring for SUT/P-CSCFdomain + */ + modulepar charstring PX_IMS_SUT_PCSCF_HOME_DOMAIN := "pcscf.sut.net"; + + /** @desc charstring for SUT/P-CSCF P_VisitedNetwork ID header (see RFC3455) + */ + modulepar charstring PX_IMS_SUT_PCSCF_VisitedNetworkID := "sut token"; + + /** @desc charstring for SUT/P-CSCF Min-SE header lower bound for the session refresh interval (see RFC4028) + */ + modulepar charstring PX_IMS_SUT_PCSCF_MinSE := "100"; + } // End of group SUT_PCSCF + + group SUT_SCSCF { + /** @desc charstring for SUT/S-CSCF IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_SCSCF_IPADDR := "172.31.10.4"; + + /** @desc integer for SUT/S-CSCF port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_SCSCF_PORT := 5060; + + /** @desc charstring for SUT/S-CSCFdomain + */ + modulepar charstring PX_IMS_SUT_SCSCF_HOME_DOMAIN := "scscf.sut.net"; + + /** @desc charstring for SUT/S-CSCF globally used realm name of IUT S-CSCF + */ + modulepar charstring PX_IMS_SUT_SCSCF_REALM := "realm.scscf"; + } // End of group SUT_SCSCF + + group SUT_ICSCF { + /** @desc charstring for SUT/I-CSCF IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_ICSCF_IPADDR := "172.31.10.3"; + + /** @desc integer for SUT/I-CSCF port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_ICSCF_PORT := 5060; + + /** @desc charstring for SUT/I-CSCFdomain + */ + modulepar charstring PX_IMS_SUT_ICSCF_HOME_DOMAIN := "icscf.sut.net"; + } // End of group SUT_ICSCF + + 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.sut.net"; + + } // End of group SUT_AS + + group SUT_IMGCF { + /** @desc charstring for SUT/I-MGCF IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_IMGCF_IPADDR := "172.31.10.10"; + + /** @desc integer for SUT/I-MGCF port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_IMGCF_PORT := 5060; + + /** @desc charstring for SUT/I-MGCFdomain + */ + modulepar charstring PX_IMS_SUT_IMGCF_HOME_DOMAIN := "imgcf.sut.net"; + } // End of group SUT_IMGCF + + group SUT_CONF { + /** + * @desc + * charstring for SUT/conference IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_CONF_IPADDR := "172.31.10.10"; + /** + * @desc integer for SUT/conference port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_CONF_PORT := 5060; + /** + * @desc charstring for SUT/conference domain + */ + modulepar charstring PX_IMS_SUT_CONF_HOME_DOMAIN := "conf.sut.net"; + /** + * @desc charstring for conference factory URI name + */ + modulepar charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name"; + } // End of group SUT_CONF + + } // End of group SUT + + group ts_ue1 { + + /** @desc charstring for IP address used by the UE1 to exchange SIP messages + */ + modulepar charstring PX_IMS_TS_UE1_IPADDR := "conftest.plugtests.net"; + + /** @desc integer for port number used by the UE1 to exchange SIP messages + */ + modulepar integer PX_IMS_TS_UE1_PORT := 5060; + + /** @desc charstring for visited(TS) REGISTRAR domain + */ + modulepar charstring PX_IMS_TS_UE1_REGISTRAR := "plugtests.net"; + + } // End of group ts_ue1 + } // end module AtsSccas_PIXITS diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn new file mode 100644 index 0000000..c7aae9a --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -0,0 +1,351 @@ +module AtsSccas_Steps { + // LibSip + 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; + + 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_SUT_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_SUT_UE1_BEARER_IPADDR; + vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; + vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; + vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; + vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; + vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; + vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; + } + } // 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_SUT_UE1_PUBLIC_USER, password:=omit}; + p_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_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_SUT_UE1_PUBLIC_USER, password := omit}; + p_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_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_UE_IPADDR, portField := PX_IMS_SUT_UE_PORT }; + + select(p_interface){ + case (c_interfaceProfile_IMS_SUT_IBCF1) { //variant c_interfaceProfile_IMS_SUT_IBCF1 + vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF1_PORT; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF1_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF1_HOME_DOMAIN; + } + case (c_interfaceProfile_IMS_SUT_IBCF2) { //variant c_interfaceProfile_IMS_SUT_IBCF2 + vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF2_PORT; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF2_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF2_HOME_DOMAIN; + } + case (c_interfaceProfile_IMS_SUT_PCSCF1) { //variant c_interfaceProfile_IMS_SUT_PCSCF1 + vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF1_PORT; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF1_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF1_HOME_DOMAIN; + } + case (c_interfaceProfile_IMS_SUT_PCSCF2) { //variant c_interfaceProfile_IMS_SUT_PCSCF2 + vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF2_PORT; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF2_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF2_HOME_DOMAIN; + } + case (c_interfaceProfile_IMS_SUT_PCSCF) { //variant c_interfaceProfile_IMS_SUT_PCSCF + vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF_PORT; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF_HOME_DOMAIN; + } + case (c_interfaceProfile_IMS_SUT_SCSCF) { //variant c_interfaceProfile_IMS_SUT_SCSCF + vc_interfaceprofile.SUTPort := PX_IMS_SUT_SCSCF_PORT; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_SCSCF_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_SCSCF_HOME_DOMAIN; + } + case (c_interfaceProfile_IMS_SUT_ICSCF) { //variant c_interfaceProfile_IMS_SUT_ICSCF + vc_interfaceprofile.SUTPort := PX_IMS_SUT_ICSCF_PORT; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_ICSCF_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_ICSCF_HOME_DOMAIN; + } + case (c_interfaceProfile_IMS_SUT_MGCF) { //variant c_interfaceProfile_IMS_SUT_MGCF + vc_interfaceprofile.SUTPort := PX_IMS_SUT_IMGCF_PORT; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IMGCF_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IMGCF_HOME_DOMAIN; + } + 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 + +} // End of module AtsSccas_Steps -- GitLab From a69019518df635332d3415bcb24c0dc93e9df875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Tue, 30 Aug 2022 09:59:58 +0200 Subject: [PATCH 059/202] new TP TP_ISC_SCCAS_CPT_INV_03 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index a5e0abc..c786264 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -278,6 +278,56 @@ Package TP_SCCAS { 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 applys the MSC Server assisted mid-call" + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.4 and 6A.4.3" + + Config Id CFG_SCCAS_01 + + PICS Selection NONE // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: 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 + g3gppMidcallMediaFeature 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 g3gppMidcallMediaFeature;; // 6A.4.3 + + to the IMS_S_CSCF entity + } + + } + + } // end TP TP_ISC_SCCAS_CPT_INV_03 + -- GitLab From a0073e2167eec9a0fa79777aef8ffda42cb06a2d Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Tue, 30 Aug 2022 10:27:13 +0200 Subject: [PATCH 060/202] Update AtsSccas_Templates.ttcn module --- .../AtsSccas_TCFunctions_TS124292.ttcn | 35 ++++++++++++------- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 25 +++++++++++++ 2 files changed, 47 insertions(+), 13 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn index 71a7657..76f5693 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -27,7 +27,9 @@ module AtsSccas_TCFunctions_TS124292 { // AtsSccas // import from AtsSccas_TestSystem all; - import from AtsSccas_PICS all; + import from AtsSccas_Templates all; + import from AtsSccas_Steps all; + import from AtsSccas_PICS all; import from AtsSccas_PIXITS all; group isc_registration { @@ -38,26 +40,33 @@ module AtsSccas_TCFunctions_TS124292 { */ function f_TC_ISC_SCCAS_MSC_REG_01(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables - var template REGISTER_Request v_register; + var CSeq v_cSeq_s; // 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_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 // Registration - + f_awaitingRegistration_IMS( + v_cSeq_s, + valueof(m_SipUrl_currDomain(vc_userprofile)), + PX_IMS_SUT_UE1_QOP, + mw_msc_register( + -, -, -, -, + mw_Authorization_digest( + mw_digestResponse( + ( + {"username", {tokenOrHost := PX_IMS_SUT_UE1_PRIVAT_USERNAME}}, + c_Integrity_protected_yes, + c_Integrity_protected_ip_assoc_pending + ) + )))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync // Deregistration - + f_IMS_postamble_withDeRegistration(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_MSC_REG_01 diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 6ef8091..97e884a 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -10,6 +10,8 @@ module AtsSccas_Templates //LibSip import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; + //LibIms + import from LibIms_Templates all; group HeaderTemplates { @@ -25,6 +27,29 @@ module AtsSccas_Templates }//end group request_sent group request_receive { + + + group msc { + + template (present) LibSip_SIPTypesAndValues.Contact mw_sccas_contact( + template (present) ContactBody p_contact_body := ? + ) := { + contactBody := p_contact_body + } // End of template mw_sccas_contact + + template (present) REGISTER_Request mw_msc_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 + ) modifies mw_REGISTER_Request_IMS := { + msgHeader := { + contact := p_contact, + authorization := p_authorization + } + } // End of template mw_msc_register + } }//end group request_receive }//end group modified_templates }//end group MessageTemplates -- GitLab From 3541dc53412432c58e5ecd675aa6c345d095992e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Tue, 30 Aug 2022 12:06:10 +0200 Subject: [PATCH 061/202] new TP for 9.3.5.1 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 66 ++++++++++++++++++- 1 file changed, 63 insertions(+), 3 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index c786264..036ccf4 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -284,7 +284,7 @@ Package TP_SCCAS { Test Purpose { TP Id TP_ISC_SCCAS_CPT_INV_03 - Test objective "Verify that the SCC AS applys the MSC Server assisted mid-call" + 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" @@ -308,7 +308,7 @@ Package TP_SCCAS { Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE, Contact containing - g3gppMidcallMediaFeature Tag;; + g3gppSrvccAlertingFeatureCapabilityIndicator Tag;; from the IMS_S_CSCF entity } @@ -319,7 +319,8 @@ Package TP_SCCAS { CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE, - FeatureCaps containing g3gppMidcallMediaFeature;; // 6A.4.3 + FeatureCaps containing + g3gppMidcallFeatureCapabilityIndicator;; to the IMS_S_CSCF entity } @@ -335,6 +336,65 @@ Package TP_SCCAS { 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: 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" { -- GitLab From 9f40f882a55aab61737d6b2304472c546ffdfd19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Tue, 30 Aug 2022 13:25:04 +0200 Subject: [PATCH 062/202] added TP 9.3.5.1 --- test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 036ccf4..433a86a 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -282,7 +282,7 @@ Package TP_SCCAS { Test Purpose { - TP Id TP_ISC_SCCAS_CPT_INV_03 + TP Id TP_ISC_SCCAS_CPT_INV_05 Test objective "Verify that the SCC AS Conditions for selecting a sessions in an early dialog phase" -- GitLab From 1a8798f67ca8e906d2aa9713265e281b5ded4509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Tue, 30 Aug 2022 16:34:18 +0200 Subject: [PATCH 063/202] new group 9.3.7 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 75 ++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 433a86a..9e5b98a 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -282,7 +282,7 @@ Package TP_SCCAS { Test Purpose { - TP Id TP_ISC_SCCAS_CPT_INV_05 + 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" @@ -1062,5 +1062,78 @@ Package TP_SCCAS { } // 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_xxx_yyy_01 + + + + Test objective "Verify that ..." + + Reference + "ETSI TS 124 237 [1], Clauses 9.3.7.2." + + Config Id CFG_SCCAS_01 + + PICS Selection NONE // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + + } + + 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, + ContentType indicating value "application/sdp", + ContentLength, + MessageBody containing + SDP containing + Media indicating value "TODO: the source access leg contains media components other than speech media component";;; + to the IMS_S_CSCF entity + } + } + + + } + } // 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" + { + + } // 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" + { + + } // 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 -- GitLab From 04e9c4d2cdd5e4c4c58b3b0706f9cc275f14b0da Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Wed, 31 Aug 2022 10:04:22 +0200 Subject: [PATCH 064/202] Update f_TC_ISC_SCCAS_MSC_REG_01 and f_TC_ISC_SCCAS_MSC_REG_02 functions --- .../AtsSccas_TCFunctions_TS124292.ttcn | 132 +++++++++++++++--- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 24 +++- 2 files changed, 133 insertions(+), 23 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn index 76f5693..847f1e6 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -46,6 +46,7 @@ module AtsSccas_TCFunctions_TS124292 { 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 @@ -54,19 +55,30 @@ module AtsSccas_TCFunctions_TS124292 { valueof(m_SipUrl_currDomain(vc_userprofile)), PX_IMS_SUT_UE1_QOP, mw_msc_register( - -, -, -, -, - mw_Authorization_digest( + -, + 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_SUT_UE1_PRIVAT_USERNAME}}, - c_Integrity_protected_yes, - c_Integrity_protected_ip_assoc_pending - ) - )))); + {"realm", {tokenOrHost := PX_IMS_SUT_UE1_PUBLIC_USER}}, + {"integrity-protected", {tokenOrHost := "auth-done"}}, + {"nonce", {tokenOrHost := ""}} + )) + ), + m_expires(600000), // Clause 6.3.2 Initial registration Point 7 + mw_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_IMS_postamble_withDeRegistration(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_MSC_REG_01 @@ -77,26 +89,45 @@ module AtsSccas_TCFunctions_TS124292 { */ function f_TC_ISC_SCCAS_MSC_REG_02(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables - var template REGISTER_Request v_register; + var CSeq v_cSeq_s; // 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_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_SUT_UE1_QOP, + mw_msc_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_SUT_UE1_PRIVAT_USERNAME}}, + {"realm", {tokenOrHost := PX_IMS_SUT_UE1_PUBLIC_USER}}, + {"integrity-protected", {tokenOrHost := "auth-done"}}, + {"nonce", {tokenOrHost := ""}} + )) + ), + m_expires(600000), // Clause 6.3.2 Initial registration Point 7 + mw_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 @@ -286,6 +317,67 @@ module AtsSccas_TCFunctions_TS124292 { } // End of function f_TC_ISC_SCCAS_MSC_CALL_ORG_02 - } // End of call_origination + } // 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 (ispresent(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 index 97e884a..e5418eb 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -37,16 +37,34 @@ module AtsSccas_Templates contactBody := p_contact_body } // End of template mw_sccas_contact + template(value) Supported mw_supported_gruu + modifies m_supported := { + optionsTags := {"gruu"} + } // End of template mw_supported_gruu + + template (present) PAccessNetworkInfo mw_pAccessNetworkInfo := { // TODO To be refined + fieldName := P_ACCESS_NETWORK_INFO_E, + accessType := ?, + genericParams := ? + } // End of template mw_pAccessNetworkInfo + template (present) REGISTER_Request mw_msc_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) 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 := ? ) modifies mw_REGISTER_Request_IMS := { msgHeader := { - contact := p_contact, - authorization := p_authorization + contact := p_contact, + authorization := p_authorization, + expires := p_expires, + supported := p_supported, + pAccessNetworkInfo := p_pPAccessNetworkInfo } } // End of template mw_msc_register } -- GitLab From 1d89faa23b7d92ce53fc6c6a61441a740bec5a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 31 Aug 2022 11:40:54 +0200 Subject: [PATCH 065/202] new TP for 9.3.7.2 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 69 +++++++++++++------ 1 file changed, 49 insertions(+), 20 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 9e5b98a..827cdab 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -320,8 +320,10 @@ Package TP_SCCAS { Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE, FeatureCaps containing - g3gppMidcallFeatureCapabilityIndicator;; - + g3gppMidcallFeatureCapabilityIndicator;, + MessageBody containing + SDP containing + Media indicating value PX_PSMediaOnly;;; // TODO: PX for media only to the IMS_S_CSCF entity } @@ -1073,51 +1075,78 @@ Package TP_SCCAS { Test Purpose { - TP Id TP_ISC_SCCAS_xxx_yyy_01 + 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 ..." + 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 // TODO + 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 r_180_Ringing - - - + 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;;; // TODO: PIX for media from the IMS_S_CSCF entity } then { - the IUT entity sends an UPDATE containing + 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, + 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 "TODO: the source access leg contains media components other than speech media component";;; + // 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 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; // TODO: PIX for media + ; + ; 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" -- GitLab From 6b9139446c8cb29c16b9f87a37bb8f837fda12cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 31 Aug 2022 13:17:51 +0200 Subject: [PATCH 066/202] added group 12.3.4 --- test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index 7f15fa4..2e0f3f0 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -355,10 +355,13 @@ Package TP_SCCAS_Chapter_12_3 { } // 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"{ -// -// import all from Sip_Common; -// } // 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.4 SCC AS procedures for PS to CS access transfer when call is in alerting phase or pre-alerting phase"{ + + import all from Sip_Common; + + + + } // 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"{ // -- GitLab From 3b285c29f4a23c582a5d1144b372027756f5fb03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 31 Aug 2022 14:02:37 +0200 Subject: [PATCH 067/202] new TPs for chapter 12.3.4 --- .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 137 +++++++++++++++++- 1 file changed, 134 insertions(+), 3 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index 2e0f3f0..b585b04 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -356,10 +356,141 @@ Package TP_SCCAS_Chapter_12_3 { } // 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; - import all from Sip_Common; - - + Test Purpose { + + TP Id TP_ISC_SCCAS_PCT_INV_01 + + 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_01 + + } // 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" // -- GitLab From c7aec3d6b40e38ca44b59c0b3295e6be5dc99f4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 31 Aug 2022 15:22:46 +0200 Subject: [PATCH 068/202] new TP 9.3.7.3 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 64 ++++++++++++++++++- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 827cdab..649565e 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -1132,13 +1132,11 @@ Package TP_SCCAS { 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 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; // TODO: PIX for media + Media indicating value PX_PSMedia; // TODO: PIX for media, media characteristics as received in the SIP INVITE request ; ; to the IMS_S_CSCF entity @@ -1152,7 +1150,67 @@ Package TP_SCCAS { 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 // TODO: 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; // TODO: PIX for media, media characteristics as received in the SIP INVITE request + ; + ; + 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 -- GitLab From ae2ee70eb029a85c34487b2fe89b3fe09c51dfd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 31 Aug 2022 16:50:45 +0200 Subject: [PATCH 069/202] new TP TP_ISC_SCCAS_TER_BYE_01 --- .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index b585b04..3ce354d 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -524,10 +524,57 @@ Package TP_SCCAS_Chapter_12_3 { // import all from Sip_Common; // } // 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; -// } // end Group "12.3.11 SCC AS procedures when the access transfer is completed" + 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_PCT_INV_03 + + Test objective "Verify that l" + + 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 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 on timerOperatorSpecificTimeout sends a BYE //for source UE leg + to the IMS_S_CSCF entity + } + } + } // End of TP TP_ISC_SCCAS_PCT_INV_03 + + } // end Group "12.3.11 SCC AS procedures when the access transfer is completed" }// End of Package TP_SCCAS_Chapter_9_3 -- GitLab From 3d3f9d852118815b968a2ff7603e503eb50b6a29 Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 27 Jun 2022 20:27:04 +0200 Subject: [PATCH 070/202] updated TPs --- test_purposes/Sip_Common.tplan2 | 1 + 1 file changed, 1 insertion(+) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 0e476f1..1a38d5f 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -54,6 +54,7 @@ Package Sip_Common { - registeredIdentitySipURI - hasInitiatedDialogWith - hasInitiatedPS2CSinEarlydialog + - hasInitiatedPS2CSinAlertingState - hasEstablishedDialog - hasEstablishedPS2CSDialog - isConfiguredWithENUMentryForTelURI_E164NumberOf -- GitLab From bf83c330de1fa2ea1b84662cfd76fb806a2d0bbf Mon Sep 17 00:00:00 2001 From: juvancic Date: Mon, 27 Jun 2022 20:27:09 +0200 Subject: [PATCH 071/202] updated TPs --- .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index ef7827b..981f1d0 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -364,7 +364,7 @@ Package TP_SCCAS_Chapter_12_3 { 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" + "ETSI TS 124 237 [1], Clause 12.3.3.5.1, 1A" Config Id CFG_SCCAS_01 @@ -404,6 +404,52 @@ Package TP_SCCAS_Chapter_12_3 { } 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_CNL_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 //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_CNL_02 } } -- GitLab From 13bc8ce2f40d539c2b12d36b00b0b263369e49e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 1 Sep 2022 10:13:48 +0200 Subject: [PATCH 072/202] new TP for 9.3.7.4 --- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 649565e..4c8eb21 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -1217,6 +1217,103 @@ Package TP_SCCAS { 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_CPT_INV_06 + + 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 + + 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 + TODO 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 + + } // 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 -- GitLab From 9af32887cd7e35683b1a5189eb0d030872d41dad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 1 Sep 2022 10:15:59 +0200 Subject: [PATCH 073/202] new TP for 9.3.7.4 --- test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 4c8eb21..c870f34 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -1272,7 +1272,7 @@ Package TP_SCCAS { Config Id CFG_SCCAS_01 - PICS Selection NONE + PICS Selection NONE // TODO Initial conditions with { the UE entity isRegisteredTo the IMS and -- GitLab From 7b20a99bf323fc974728ec6bb97d560703274220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 1 Sep 2022 10:18:14 +0200 Subject: [PATCH 074/202] new TP for 9.3.7.4 --- test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index c870f34..b892fa0 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -1272,7 +1272,7 @@ Package TP_SCCAS { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { the UE entity isRegisteredTo the IMS and -- GitLab From 80db9e20abd9f008661c2ecebf532326f446575d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 1 Sep 2022 10:27:47 +0200 Subject: [PATCH 075/202] new TP for 12.3.11 --- test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index ef7827b..b34dcf7 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -586,12 +586,12 @@ Package TP_SCCAS_Chapter_12_3 { Test Purpose { - TP Id TP_ISC_SCCAS_PCT_INV_03 + TP Id TP_ISC_SCCAS_TER_BYE_01 - Test objective "Verify that l" + 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.4.4" + "ETSI TS 124 237 [1], Clause 12.3.11" Config Id CFG_SCCAS_01 @@ -599,8 +599,7 @@ Package TP_SCCAS_Chapter_12_3 { 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 + the IUT entity hasAchievedInitialINVITE } Expected behaviour @@ -623,11 +622,12 @@ Package TP_SCCAS_Chapter_12_3 { } then { the IUT entity sends a r_200_Ok_BYE and - the IUT entity on timerOperatorSpecificTimeout sends a BYE //for source UE leg + 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_PCT_INV_03 + } // End of TP TP_ISC_SCCAS_TER_BYE_01 } // end Group "12.3.11 SCC AS procedures when the access transfer is completed" -- GitLab From 146cd3a7b02a4be4a03b945c3600bd73210dde25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 1 Sep 2022 10:28:35 +0200 Subject: [PATCH 076/202] new TP 9.3.7.4 --- test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index b892fa0..c870f34 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -1272,7 +1272,7 @@ Package TP_SCCAS { Config Id CFG_SCCAS_01 - PICS Selection NONE + PICS Selection NONE // TODO Initial conditions with { the UE entity isRegisteredTo the IMS and -- GitLab From 1f119a537dee66acf5ab3b4e7b96b715f98cebe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 1 Sep 2022 11:20:48 +0200 Subject: [PATCH 077/202] rename TP for 9.3.7.4 --- test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index c870f34..0fd7ded 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -1263,7 +1263,7 @@ Package TP_SCCAS { // 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_CPT_INV_06 + TP Id TP_ISC_SCCAS_PCT_INV_06 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 " -- GitLab From f461ebf0511bd1df92b8db3f6e0cb4b9f777bb83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 1 Sep 2022 14:33:47 +0200 Subject: [PATCH 078/202] new TPs for 12.3.10.2 and 12.3.10.3 and renaming --- test_purposes/Sip_Common.tplan2 | 1 + .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 326 +++++++++++++++++- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 10 +- 3 files changed, 325 insertions(+), 12 deletions(-) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 0e476f1..e45b5c4 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -75,6 +75,7 @@ Package Sip_Common { - hasResponded486INVITE - hasAchievedInitialINVITE - hasAchievedINVITE + - hasAchievedUPDATEuponINVITE - timerOperatorSpecificTimeout //NOTE: 8 seconds is an appropriate value for the operator policy. - isAttachingToNetwork - hasDoneSubscription diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index b34dcf7..47b6ac8 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -418,7 +418,7 @@ Package TP_SCCAS_Chapter_12_3 { Test Purpose { - TP Id TP_ISC_SCCAS_PCT_INV_01 + 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" @@ -452,7 +452,7 @@ Package TP_SCCAS_Chapter_12_3 { } } - } // End of TP_ISC_SCCAS_PCT_INV_01 + } // 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" @@ -574,11 +574,323 @@ Package TP_SCCAS_Chapter_12_3 { // import all from Sip_Common; // } // end Group "12.3.9 Charging correlation" // -// Group "12.3.10 SCC AS procedures for CS to PS SRVCC"{ -// -// import all from Sip_Common; -// } // end Group "12.3.10 SCC AS procedures for CS to PS SRVCC" -// + 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 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 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 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 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; diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 index 0fd7ded..22a26aa 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 @@ -598,7 +598,7 @@ Package TP_SCCAS { // 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_01 + 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" @@ -651,7 +651,7 @@ Package TP_SCCAS { } } - } // end TP_ISC_SCCAS_PCT_INV_01 + } // 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" @@ -771,7 +771,7 @@ Package TP_SCCAS { // - 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_01 + 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" @@ -1263,7 +1263,7 @@ Package TP_SCCAS { // 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_06 + 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 " @@ -1311,7 +1311,7 @@ Package TP_SCCAS { } } - } // end TP + } // 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 -- GitLab From 4be19b7a383834d784c49bf70c1005183246b74b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 1 Sep 2022 16:36:50 +0200 Subject: [PATCH 079/202] bugfixing --- test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index 469ccfa..72be14c 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -723,7 +723,7 @@ Package TP_SCCAS_Chapter_12_3 { Initial conditions with { the UE entity isRegisteredTo the IMS and - the IUT entity hasAchievedInitialINVITE and // INVITE contains TargetDialog header field + the IUT entity hasAchievedInitialINVITE and // INVITE initiated by served User and contains TargetDialog header field the IUT entity hasAchievedUPDATEuponINVITE } @@ -757,7 +757,7 @@ Package TP_SCCAS_Chapter_12_3 { Initial conditions with { the UE entity isRegisteredTo the IMS and - the IUT entity hasAchievedInitialINVITE and // INVITE contains TargetDialog header field + the IUT entity hasAchievedInitialINVITE and // INVITE initiated by remote user and contains TargetDialog header field the IUT entity hasAchievedUPDATEuponINVITE } @@ -880,7 +880,7 @@ Package TP_SCCAS_Chapter_12_3 { Initial conditions with { the UE entity isRegisteredTo the IMS and - the IUT entity hasAchievedInitialINVITE and // INVITE contains Accept containing MIME indicating value "application/vnd.3gpp.mid-call+xml" + 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 } @@ -902,7 +902,7 @@ Package TP_SCCAS_Chapter_12_3 { TP Id TP_ISC_SCCAS_CPT_INV_14 - Test objective "Verify that the SCC AS handles correctly transfer of terminating session in alerting phase" + 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" @@ -913,7 +913,7 @@ Package TP_SCCAS_Chapter_12_3 { Initial conditions with { the UE entity isRegisteredTo the IMS and - the IUT entity hasAchievedInitialINVITE and // INVITE contains Accept containing MIME indicating value "application/vnd.3gpp.mid-call+xml" + 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 } -- GitLab From 534a631d5f8eaabbf41b35caa2f03a9b1c666ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Fri, 2 Sep 2022 10:05:15 +0200 Subject: [PATCH 080/202] new TP 12.3.7 --- test_purposes/Sip_Common.tplan2 | 1 + .../sccas/TP_SCCAS_Chapter_12_3.tplan2 | 54 +++++++++++++++++-- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/test_purposes/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index 5467680..e4c656a 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -145,6 +145,7 @@ Package Sip_Common { SipMessage REFER; SipMessage PRACK; SipMessage UPDATE; + SipMessage OPTIONS; // SIP Responses SipMessage r_1xx_Any; SipMessage r_100_Trying; diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index 72be14c..e75b73c 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -605,10 +605,56 @@ Package TP_SCCAS_Chapter_12_3 { // 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; -// } // end Group "12.3.7 SCC AS procedures for handling of SIP OPTIONS request" + 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"{ // -- GitLab From 99e0f4b8eb87cf9f23ecc980c6cae5a2433dd5c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Fri, 2 Sep 2022 11:03:50 +0200 Subject: [PATCH 081/202] minor changes --- test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index e75b73c..7c86939 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -629,7 +629,7 @@ Package TP_SCCAS_Chapter_12_3 { Expected behaviour ensure that { when { - the IUT entity receives an OPTIONS containing + 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, -- GitLab From e0c8a9eb4a57f9bda8e5d843f76a2387d241c167 Mon Sep 17 00:00:00 2001 From: juvancic Date: Tue, 28 Jun 2022 02:31:46 +0200 Subject: [PATCH 082/202] copied TPs to commonchapter module --- .../sccas/TP_SCCAS_Chapter_9_3.tplan2 | 1324 ++++++++++++++++- 1 file changed, 1300 insertions(+), 24 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 index a94e515..97de144 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 @@ -72,30 +72,1306 @@ Package TP_SCCAS_Chapter_9_3 { 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; -// } // 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; -// } // 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"{ -// -// import all from Sip_Common; -// }// end 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.6 Removal of non-transferred audio media components and release of source access legs"{ -// -// import all from Sip_Common; -// }// 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"{ -// -// import all from Sip_Common; -// } // end Group "9.3.7 SCC AS procedures for CS to PS dual radio access transfer for calls in an early phase" + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS // TODO + } + + 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, // TODO PX + from_tag indicating value PX_from_tag, // TODO PX + to_tag indicating value PX_to_tag // TODO PX + MessageBody containing + SDP containing // SDP: Session Description Protocol + Media indicating value PX_PSMediaOnly, // TODO: PX for media only + 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, // TODO: PX for media only + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS // TODO + } + + 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, // TODO PX + from_tag indicating value PX_from_tag, // TODO PX + to_tag indicating value PX_to_tag // TODO PX + MessageBody containing + SDP containing // SDP: Session Description Protocol + Media indicating value PX_PSMediaOnly, // TODO: PX for media only + 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, // TODO: PX for media only + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS and // TODO + 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, // TODO PX + from_tag indicating value PX_from_tag, // TODO PX + to_tag indicating value PX_to_tag // TODO PX + MessageBody containing + SDP containing // SDP: Session Description Protocol + Media indicating value PX_PSMediaOnly, // TODO: PX for media only + 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, // TODO: PX for media only + 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 // TODO + + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: 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;;; // TODO: PX for media only + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: + // 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_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 // TODO + + 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_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 // TODO + + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: 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 { + // TODO: Trigger unclear for this refer + 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 "TODO: 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 + TODO 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // 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 + } + + 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 "TODO: 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 + TODO 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // 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 + } + + 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 // 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]. + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO + // source access leg is an ongoing session containing only an active or inactive media component + + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an ACK + // TODO: trigger for event unclear, transfer of a session is successfully completed + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: session is dialog in an early dialog phase on the originating side + } + + Expected behaviour + ensure that { + when { + the IUT entity receives an ACK + + // TODO: trigger for event unclear, transfer of a session is successfully completed + + 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 // TODO + + Initial conditions with { + the UE entity isRegisteredTo the IMS + // TODO: + // 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 + + // TODO: trigger for event unclear, transfer of a session is successfully completed + + 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 "TODO: 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;;; // TODO: PIX for media + 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; // TODO: PIX for media, media characteristics as received in the SIP INVITE request + ; + ; + 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 // TODO: 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; // TODO: PIX for media, media characteristics as received in the SIP INVITE request + ; + ; + 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 // TODO + + 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 + TODO 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 -- GitLab From 495a8a2d6eb8ab967dab8dd6c777379aa50d9c1c Mon Sep 17 00:00:00 2001 From: pintar Date: Mon, 5 Sep 2022 12:34:57 +0200 Subject: [PATCH 083/202] Minor TP ID updates done --- test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 | 12 ++++++------ test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 index 7c86939..3742d53 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 @@ -67,7 +67,7 @@ Package TP_SCCAS_Chapter_12_3 { Test Purpose { - TP Id TP_ISC_SCCAS_SRA_INI_02 + TP Id TP_ISC_SCCAS_SRA_INV_02 Test objective "Verify that the SCCAS distinguish SIP INVITE with STN-SR and informs remote UE" @@ -167,7 +167,7 @@ Package TP_SCCAS_Chapter_12_3 { import all from Sip_Common; Test Purpose { - TP Id TP_ISC_SCCAS_SRA_INI_04 + 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" @@ -359,7 +359,7 @@ Package TP_SCCAS_Chapter_12_3 { Test Purpose { - TP Id TP_ISC_SCCAS_SRA_CNL_01 + 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" @@ -400,7 +400,7 @@ Package TP_SCCAS_Chapter_12_3 { to the IMS_S_CSCF entity } } - } // End of TP_ISC_SCCAS_SRA_CNL_01 + } // End of TP_ISC_SCCAS_SRA_CAN_01 } Group "12.3.3.5.2 SCC AS serving a terminating user"{ @@ -408,7 +408,7 @@ Package TP_SCCAS_Chapter_12_3 { Test Purpose { - TP Id TP_ISC_SCCAS_SRA_CNL_02 + 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" @@ -449,7 +449,7 @@ Package TP_SCCAS_Chapter_12_3 { //to the IMS_S_CSCF entity } } - } // End of TP_ISC_SCCAS_SRA_CNL_02 + } // End of TP_ISC_SCCAS_SRA_CAN_02 } } diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 index 97de144..76b731a 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 @@ -565,7 +565,7 @@ Package TP_SCCAS_Chapter_9_3 { // This TP: only case A - TP Id TP_ISC_PCT_RES_02 + 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" @@ -613,7 +613,7 @@ Package TP_SCCAS_Chapter_9_3 { to the IMS_S_CSCF entity } } - } // end TP TP_ISC_PCT_RES_02 + } // 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" -- GitLab From dedbff368edc8c43f584907e7ecb2dd394437d20 Mon Sep 17 00:00:00 2001 From: pintar Date: Mon, 5 Sep 2022 12:44:40 +0200 Subject: [PATCH 084/202] References updated --- test_purposes/References.txt | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/test_purposes/References.txt b/test_purposes/References.txt index 0569619..47a5379 100644 --- a/test_purposes/References.txt +++ b/test_purposes/References.txt @@ -1,19 +1,7 @@ -TODO - -[1] ETSI ES 203 119-4: "TDL: Structured Test Objective Specification (Extension)" -[2] ETSI TS 124 229: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; IP multimedia call control protocol based on Session Initiation Protocol (SIP) and Session Description Protocol (SDP); Stage 3 (3GPP TS 24.229 Release 15)". -[3] ETSI TS 129 165: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Inter-IMS Network to Network Interface (NNI) (3GPP TS 29.165 Release 15)". -[4] ETSI TS 129 228: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; IP Multimedia (IM) Subsystem Cx and Dx Interfaces; Signalling flows and message contents (3GPP TS 29.228 Release 15)". -[5] ETSI TS 129 229: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Cx and Dx interfaces based on the Diameter protocol; Protocol details (3GPP TS 29.229 Release 15)". -[6] ETSI TS 132 260: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Telecommunication management;Charging management;IP Multimedia Subsystem (IMS) charging (3GPP TS 32.260 Release 15)". -[7] ETSI TS 132 299: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Telecommunication management; Charging management; Diameter charging applications (3GPP TS 32.299 Release 15)". -[8] ETSI TS 129 214: "Universal Mobile Telecommunications System (UMTS); LTE; Policy and charging control over Rx reference point (3GPP TS 29.214 Release 15)". -[9] ETSI TS 129 212: "Universal Mobile Telecommunications System (UMTS); LTE; Policy and Charging Control (PCC); Reference points (3GPP TS 29.212 Release 15)". -[10] ETSI TS 129 272: "Universal Mobile Telecommunications System (UMTS); LTE; Evolved Packet System (EPS); Mobility Management Entity (MME) and Serving GPRS Support Node (SGSN) related interfaces based on Diameter protocol (3GPP TS 29.272 Release 15)". -[11] ETSI TS 129 215: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Policy and Charging Control (PCC) over S9 reference point; Stage 3 (3GPP TS 29.215 Release 15)". -[12] ETSI TS 129 328: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; IP Multimedia (IM) Subsystem Sh interface; Signalling flows and message contents (3GPP TS 29.328 Release 15)". -[13] ETSI TS 129 329: "Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; Sh interface based on the Diameter protocol; Protocol details (3GPP TS 29.329 Release 15)". -[14] ISO/IEC 9646-1: "Information technology -- Open Systems Interconnection -- Conformance testing methodology and framework -- Part 1: General concepts". -[15] ISO/IEC 9646-7: "Information technology -- Open Systems Interconnection -- Conformance testing methodology and framework -- Part 7: Implementation Conformance Statements". -[16] ETSI ETS 300 406: "Methods for testing and Specification (MTS); Protocol and profile conformance testing specifications; Standardization methodology". -[17] IETF RFC 3588: "Diameter Base Protocol". \ No newline at end of file +[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 -- GitLab From ee3f9182ad71fd848708d21bfbe29a75cc26b024 Mon Sep 17 00:00:00 2001 From: pintar Date: Mon, 5 Sep 2022 12:47:35 +0200 Subject: [PATCH 085/202] Not needed modules removed --- test_purposes/sccas/TP_SCCAS.tplan2 | 117 -- .../sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 | 1323 ----------------- 2 files changed, 1440 deletions(-) delete mode 100644 test_purposes/sccas/TP_SCCAS.tplan2 delete mode 100644 test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 diff --git a/test_purposes/sccas/TP_SCCAS.tplan2 b/test_purposes/sccas/TP_SCCAS.tplan2 deleted file mode 100644 index e13d132..0000000 --- a/test_purposes/sccas/TP_SCCAS.tplan2 +++ /dev/null @@ -1,117 +0,0 @@ -/* -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 { - - import all from Sip_Common; - - Test Purpose { - - TP Id TP_SCCAS_REGISTER_01 - - Test objective "TODO -- Verify that the P-CSCF successfully processes a first registration (Successful)." - - Reference - "TODO -ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2" - - 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_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; - 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, - 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_MW_PCSCF_REGISTER_01 - - Test Purpose { - - TP Id TP_SCCAS_INVITE_01 - - Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [1], Clauses 5.2.7.2 and 6.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, - PAccessNetworkInfo, - MessageBody containing - SDP containing - 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 - Version indicating value "0";;; - to the IMS_S_CSCF entity - } - } - - } // End of TP_MW_PCSCF_INVITE_01 - -} // End of Package TP_MW_PS - diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 deleted file mode 100644 index 22a26aa..0000000 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 +++ /dev/null @@ -1,1323 +0,0 @@ -/* -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 "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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS // TODO - } - - 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, // TODO PX - from_tag indicating value PX_from_tag, // TODO PX - to_tag indicating value PX_to_tag // TODO PX - MessageBody containing - SDP containing // SDP: Session Description Protocol - Media indicating value PX_PSMediaOnly, // TODO: PX for media only - 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, // TODO: PX for media only - 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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS // TODO - } - - 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, // TODO PX - from_tag indicating value PX_from_tag, // TODO PX - to_tag indicating value PX_to_tag // TODO PX - MessageBody containing - SDP containing // SDP: Session Description Protocol - Media indicating value PX_PSMediaOnly, // TODO: PX for media only - 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, // TODO: PX for media only - 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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS and // TODO - 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, // TODO PX - from_tag indicating value PX_from_tag, // TODO PX - to_tag indicating value PX_to_tag // TODO PX - MessageBody containing - SDP containing // SDP: Session Description Protocol - Media indicating value PX_PSMediaOnly, // TODO: PX for media only - 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, // TODO: PX for media only - 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 // TODO - - 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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS - // TODO: 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;;; // TODO: PX for media only - 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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS - // TODO: 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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS - // TODO: - // 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_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 // TODO - - 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_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 // TODO - - 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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS - // TODO: 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 { - // TODO: Trigger unclear for this refer - 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 "TODO: 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 - TODO 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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS - // 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 - } - - 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 "TODO: 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 - TODO 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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS - // 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 - } - - 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 // 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]. - 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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS - // TODO - // source access leg is an ongoing session containing only an active or inactive media component - - } - - Expected behaviour - ensure that { - when { - the IUT entity receives an ACK - // TODO: trigger for event unclear, transfer of a session is successfully completed - 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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS - // TODO: session is dialog in an early dialog phase on the originating side - } - - Expected behaviour - ensure that { - when { - the IUT entity receives an ACK - - // TODO: trigger for event unclear, transfer of a session is successfully completed - - 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 // TODO - - Initial conditions with { - the UE entity isRegisteredTo the IMS - // TODO: - // 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 - - // TODO: trigger for event unclear, transfer of a session is successfully completed - - 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 "TODO: 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;;; // TODO: PIX for media - 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; // TODO: PIX for media, media characteristics as received in the SIP INVITE request - ; - ; - 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 // TODO: 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; // TODO: PIX for media, media characteristics as received in the SIP INVITE request - ; - ; - 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 // TODO - - 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 - TODO 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 - -- GitLab From 59e77c0ed7971a9d3b7be668fbd738ce4ec56f8f Mon Sep 17 00:00:00 2001 From: pintar Date: Mon, 5 Sep 2022 12:48:34 +0200 Subject: [PATCH 086/202] Not needed module removed --- test_purposes/ims/TP_SCSCF.tplan2 | 117 ------------------------------ 1 file changed, 117 deletions(-) delete mode 100644 test_purposes/ims/TP_SCSCF.tplan2 diff --git a/test_purposes/ims/TP_SCSCF.tplan2 b/test_purposes/ims/TP_SCSCF.tplan2 deleted file mode 100644 index adc7535..0000000 --- a/test_purposes/ims/TP_SCSCF.tplan2 +++ /dev/null @@ -1,117 +0,0 @@ -/* -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 SCSCF */ -Package TP_SCSCF { - - import all from Sip_Common; - - Test Purpose { - - TP Id TP_SCCAS_REGISTER_01 - - Test objective "TODO -- Verify that the P-CSCF successfully processes a first registration (Successful)." - - Reference - "TODO -ETSI TS 124 229 [1], Clauses 5.2.2.1 and 6.2" - - Config Id CFG_SCSCF_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_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; - 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, - 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_SCCAS_REGISTER_01 - - Test Purpose { - - TP Id TP_SCCAS_INVITE_01 - - Test objective "Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg)." - - Reference - "ETSI TS 124 229 [1], Clauses 5.2.7.2 and 6.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, - PAccessNetworkInfo, - MessageBody containing - SDP containing - 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 - Version indicating value "0";;; - to the IMS_S_CSCF entity - } - } - - } // End of TP_SCCAS_INVITE_01 - -} // End of Package TP_SCSCF - -- GitLab From 75dc3b9a986c90a1f1b95127ba5e5531f6f7a95f Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Tue, 11 Oct 2022 14:48:52 +0200 Subject: [PATCH 087/202] Start REGISTER implementation --- ttcn/AtsSccas/AtsSccas_PICS.ttcn | 44 +- ttcn/AtsSccas/AtsSccas_PIXITS.ttcn | 770 +++++++++--------- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 482 +++++++++-- .../AtsSccas_TCFunctions_TS124292.ttcn | 8 +- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 201 +++-- ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn | 612 +++++++------- ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn | 20 +- ttcn/AtsSccas/AtsSccas_TestSystem.ttcn | 118 +-- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 241 ++++-- .../AtsSccas/AtsSccas_Testcases_TS124292.ttcn | 512 ++++++------ 10 files changed, 1769 insertions(+), 1239 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_PICS.ttcn b/ttcn/AtsSccas/AtsSccas_PICS.ttcn index a5921e7..0e2df8c 100644 --- a/ttcn/AtsSccas/AtsSccas_PICS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PICS.ttcn @@ -1,22 +1,22 @@ -/* - *@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 boolean PICS ref: A-3/5 - True, if SUT/SCSCF requires ... - */ - boolean PC_SCCAS_TODO := false; - - boolean PICS_MSC_GM := false; -} -} // end module AtsSccas_PICS +/* + *@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 boolean PICS ref: A-3/5 + True, if SUT/SCSCF requires ... + */ + boolean PC_SCCAS_TODO := false; + + boolean PICS_MSC_GM := false; +} +} // end module AtsSccas_PICS diff --git a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn index 9e69710..51fa338 100644 --- a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn @@ -1,384 +1,386 @@ -/* - * @author TTF T016 - * @version $Id$ - * @desc This module provides the PIXIT used for the SIP-IMS tests. - */ - -module AtsSccas_PIXITS -{ - - -// SUT specific implementation variants - -modulepar { - - /** @desc boolean for SUT working mode due to - */ - boolean PX_SCCAS__ := true; - -} - - group SUT { - - group SUT_UE { - /** @desc charstring for SUT - UE IP address to exchange SIP messages - connection point for PCSCF - */ - modulepar charstring PX_IMS_SUT_UE_IPADDR := "10.100.0.6"; - - /** @desc integer for SUT - UE port number to exchange SIP messages - connection point for PCSCF - */ - modulepar integer PX_IMS_SUT_UE_PORT := 5060; - } // End of group SUT_UE1 - - group SUT_UE1 { - /** @desc charstring for SUT - PCSCF1 IP address to exchange SIP messages - connection point for UE1 - */ - modulepar charstring PX_IMS_SUT_PCSCF1_IPADDR := "10.100.0.6"; - - /** @desc integer for SUT - PCSCF1 port number to exchange SIP messages - connection point for UE1 - */ - modulepar integer PX_IMS_SUT_PCSCF1_PORT := 5060; - - /** @desc charstring for SUT/PCSCF1 domain - connection point for UE1 - */ - modulepar charstring PX_IMS_SUT_PCSCF1_HOME_DOMAIN := "plugtests.net"; - - /** @desc charstring for IP address used by the TS to exchange media streams for UE1 - */ - modulepar charstring PX_IMS_SUT_UE1_BEARER_IPADDR := "conftest.plugtests.net"; - - /** @desc charstring for identity of the tester UE1 local domain - */ - modulepar charstring PX_IMS_SUT_UE1_HOME_DOMAIN := "plugtests.net"; - - /** @desc charstring for identity of the tester UE1 local user - */ - modulepar charstring PX_IMS_SUT_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_SUT_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_SUT_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_SUT_UE1_QOP := "auth"; - - /** @desc charstring for home(SUT) REGISTRAR domain of UE1 - */ - modulepar charstring PX_IMS_SUT_UE1_REGISTRAR := "registrar.sut.net"; - - /** @desc charstring for UE1 display name - */ - modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "alice-05@plugtest.net"; - } // End of group SUT_UE1 - - group SUT_UE2 { - /** @desc charstring for SUT - PCSCF2 IP address to exchange SIP messages - connection point for UE2 - */ - modulepar charstring PX_IMS_SUT_PCSCF2_IPADDR := "esrp1.frequentis.plugtests.net"; - - /** @desc integer for SUT - PCSCF2 port number to exchange SIP messages - connection point for UE2 - */ - modulepar integer PX_IMS_SUT_PCSCF2_PORT := 5060; - - /** @desc charstring for SUT/PCSCF2 domain - connection point for UE2 - */ - modulepar charstring PX_IMS_SUT_PCSCF2_HOME_DOMAIN := "plugtests.net"; - - /** @desc charstring for IP address used by the TS to exchange media streams for UE2 - */ - modulepar charstring PX_IMS_SUT_UE2_BEARER_IPADDR := "esrp1.frequentis.plugtests.net"; - - /** @desc charstring for identity of the tester UE2 local domain - */ - modulepar charstring PX_IMS_SUT_UE2_HOME_DOMAIN := "plugtests.net"; - - /** @desc charstring for identity of the tester UE2 local user - */ - modulepar charstring PX_IMS_SUT_UE2_PUBLIC_USER := "2910"; - - /** @desc charstring for RFC 2617 clause 3-2-2 username of UE2: - * The name of user in the specified realm - */ - modulepar charstring PX_IMS_SUT_UE2_PRIVAT_USERNAME := "abcd"; - - /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2 - */ - modulepar charstring PX_IMS_SUT_UE2_PRIVAT_PASSWD := "1234"; - - /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE2: - * 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_SUT_UE2_QOP := "auth"; - - /** @desc charstring for home(SUT) REGISTRAR domain of UE2 - */ - modulepar charstring PX_IMS_SUT_UE2_REGISTRAR := "plugtests.net"; - } // End of group SUT_UE2 - - group SUT_UE3 { - /** @desc charstring for SUT - PCSCF3 IP address to exchange SIP messages - connection point for UE3 - */ - modulepar charstring PX_IMS_SUT_PCSCF3_IPADDR := "172.31.10.2"; - - /** @desc integer for SUT - PCSCF3 port number to exchange SIP messages - connection point for UE3 - */ - modulepar integer PX_IMS_SUT_PCSCF3_PORT := 5060; - - /** @desc charstring for SUT/PCSCF3 domain - connection point for UE3 - */ - modulepar charstring PX_IMS_SUT_PCSCF3_HOME_DOMAIN := "pcscf3.home.net"; - - /** @desc charstring for IP address used by the TS to exchange media streams for UE3 - */ - modulepar charstring PX_IMS_SUT_UE3_BEARER_IPADDR := "172.31.10.2"; - - /** @desc charstring for identity of the tester UE2 local domain - */ - modulepar charstring PX_IMS_SUT_UE3_HOME_DOMAIN := "sut.net"; - - /** @desc charstring for identity of the tester UE3 local user - */ - modulepar charstring PX_IMS_SUT_UE3_PUBLIC_USER := "2910"; - - /** @desc charstring for RFC 2617 clause 3-2-2 username of UE3: - * The name of user in the specified realm - */ - modulepar charstring PX_IMS_SUT_UE3_PRIVAT_USERNAME := "abcd"; - - /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE3 - */ - modulepar charstring PX_IMS_SUT_UE3_PRIVAT_PASSWD := "1234"; - - /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE3: - * 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_SUT_UE3_QOP := "auth"; - - /** @desc charstring for home(SUT) REGISTRAR domain of UE3 - */ - modulepar charstring PX_IMS_SUT_UE3_REGISTRAR := "registrar.sut.net"; - } // End of group SUT_UE3 - - group SUT_UE4 {//UE4 can be used as UE1Visited - /** @desc charstring for SUT - PCSCF4 IP address to exchange SIP messages - connection point for UE4 - */ - modulepar charstring PX_IMS_SUT_PCSCF4_IPADDR := "172.31.10.2"; - - /** @desc integer for SUT - PCSCF4 port number to exchange SIP messages - connection point for UE4 - */ - modulepar integer PX_IMS_SUT_PCSCF4_PORT := 5060; - - /** @desc charstring for SUT/PCSCF4 domain - connection point for UE4 - */ - modulepar charstring PX_IMS_SUT_PCSCF4_HOME_DOMAIN := "pcscf4.home.net"; - - /** @desc charstring for IP address used by the TS to exchange media streams for UE4 - */ - modulepar charstring PX_IMS_SUT_UE4_BEARER_IPADDR := "172.31.10.2"; - - /** @desc charstring for identity of the tester UE2 local domain - */ - modulepar charstring PX_IMS_SUT_UE4_HOME_DOMAIN := "sut.net"; - - /** @desc charstring for identity of the tester UE4 local user - */ - modulepar charstring PX_IMS_SUT_UE4_PUBLIC_USER := "2910"; - - /** @desc charstring for RFC 2617 clause 3-2-2 username of UE4: - * The name of user in the specified realm - */ - modulepar charstring PX_IMS_SUT_UE4_PRIVAT_USERNAME := "abcd"; - - /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2 - */ - modulepar charstring PX_IMS_SUT_UE4_PRIVAT_PASSWD := "1234"; - - /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE4: - * 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_SUT_UE4_QOP := "auth"; - - /** @desc charstring for home(SUT) REGISTRAR domain of UE4 - */ - modulepar charstring PX_IMS_SUT_UE4_REGISTRAR := "registrar.sut.net"; - } // End of group SUT_UE4 - - group SUT_unknown { - /** @desc charstring for identity of unknown UE public user - */ - modulepar charstring PX_IMS_SUT_unknownUE_PUBLIC_USER := "0007"; - } // End of group SUT_unknown - - group EMERGENCY{ - /** @desc charstring for identity of emergency service local domain - */ - modulepar charstring PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "plugtests.net"; - - /** @desc charstring for identity of the emergency service - */ - modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE := "112"; - - /** @desc charstring for identity of the invalid emergency service - */ - modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_INVALID := "service.sos.invalid"; - } // End of group EMERGENCY service - - group SUT_IBCF { - /** @desc charstring for SUT/IBCF1 IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_IBCF1_IPADDR := "172.31.10.5"; - - /** @desc integer for SUT/IBCF1 port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_IBCF1_PORT := 5060; - - /** @desc charstring for SUT/IBCF1 domain - */ - modulepar charstring PX_IMS_SUT_IBCF1_HOME_DOMAIN := "ibcf1.sut.net"; - - /** @desc charstring for SUT/IBCF2 IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_IBCF2_IPADDR := "172.31.10.6"; - - /** @desc integer for SUT/IBCF2 port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_IBCF2_PORT := 5060; - - /** @desc charstring for SUT/IBCF2 domain - */ - modulepar charstring PX_IMS_SUT_IBCF2_HOME_DOMAIN := "ibcf2.sut.net"; - } // End of group SUT_IBCF - - group SUT_PCSCF { - /** @desc charstring for SUT/P-CSCF IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_PCSCF_IPADDR := "172.31.10.2"; - - /** @desc integer for SUT/P-CSCF port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_PCSCF_PORT := 5060; - - /** @desc charstring for SUT/P-CSCFdomain - */ - modulepar charstring PX_IMS_SUT_PCSCF_HOME_DOMAIN := "pcscf.sut.net"; - - /** @desc charstring for SUT/P-CSCF P_VisitedNetwork ID header (see RFC3455) - */ - modulepar charstring PX_IMS_SUT_PCSCF_VisitedNetworkID := "sut token"; - - /** @desc charstring for SUT/P-CSCF Min-SE header lower bound for the session refresh interval (see RFC4028) - */ - modulepar charstring PX_IMS_SUT_PCSCF_MinSE := "100"; - } // End of group SUT_PCSCF - - group SUT_SCSCF { - /** @desc charstring for SUT/S-CSCF IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_SCSCF_IPADDR := "172.31.10.4"; - - /** @desc integer for SUT/S-CSCF port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_SCSCF_PORT := 5060; - - /** @desc charstring for SUT/S-CSCFdomain - */ - modulepar charstring PX_IMS_SUT_SCSCF_HOME_DOMAIN := "scscf.sut.net"; - - /** @desc charstring for SUT/S-CSCF globally used realm name of IUT S-CSCF - */ - modulepar charstring PX_IMS_SUT_SCSCF_REALM := "realm.scscf"; - } // End of group SUT_SCSCF - - group SUT_ICSCF { - /** @desc charstring for SUT/I-CSCF IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_ICSCF_IPADDR := "172.31.10.3"; - - /** @desc integer for SUT/I-CSCF port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_ICSCF_PORT := 5060; - - /** @desc charstring for SUT/I-CSCFdomain - */ - modulepar charstring PX_IMS_SUT_ICSCF_HOME_DOMAIN := "icscf.sut.net"; - } // End of group SUT_ICSCF - - 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.sut.net"; - - } // End of group SUT_AS - - group SUT_IMGCF { - /** @desc charstring for SUT/I-MGCF IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_IMGCF_IPADDR := "172.31.10.10"; - - /** @desc integer for SUT/I-MGCF port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_IMGCF_PORT := 5060; - - /** @desc charstring for SUT/I-MGCFdomain - */ - modulepar charstring PX_IMS_SUT_IMGCF_HOME_DOMAIN := "imgcf.sut.net"; - } // End of group SUT_IMGCF - - group SUT_CONF { - /** - * @desc - * charstring for SUT/conference IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_CONF_IPADDR := "172.31.10.10"; - /** - * @desc integer for SUT/conference port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_CONF_PORT := 5060; - /** - * @desc charstring for SUT/conference domain - */ - modulepar charstring PX_IMS_SUT_CONF_HOME_DOMAIN := "conf.sut.net"; - /** - * @desc charstring for conference factory URI name - */ - modulepar charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name"; - } // End of group SUT_CONF - - } // End of group SUT - - group ts_ue1 { - - /** @desc charstring for IP address used by the UE1 to exchange SIP messages - */ - modulepar charstring PX_IMS_TS_UE1_IPADDR := "conftest.plugtests.net"; - - /** @desc integer for port number used by the UE1 to exchange SIP messages - */ - modulepar integer PX_IMS_TS_UE1_PORT := 5060; - - /** @desc charstring for visited(TS) REGISTRAR domain - */ - modulepar charstring PX_IMS_TS_UE1_REGISTRAR := "plugtests.net"; - - } // End of group ts_ue1 - -} // end module AtsSccas_PIXITS +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides the PIXIT used for the SIP-IMS tests. + */ + +module AtsSccas_PIXITS +{ + + +// SUT specific implementation variants + +modulepar { + + /** @desc boolean for SUT working mode due to + */ + boolean PX_SCCAS__ := true; + + charstring PX_SIP_URI := ""; + +} + + group SUT { + + group SUT_UE { + /** @desc charstring for SUT - UE IP address to exchange SIP messages - connection point for PCSCF + */ + modulepar charstring PX_IMS_SUT_UE_IPADDR := "10.100.0.6"; + + /** @desc integer for SUT - UE port number to exchange SIP messages - connection point for PCSCF + */ + modulepar integer PX_IMS_SUT_UE_PORT := 5060; + } // End of group SUT_UE1 + + group SUT_UE1 { + /** @desc charstring for SUT - PCSCF1 IP address to exchange SIP messages - connection point for UE1 + */ + modulepar charstring PX_IMS_SUT_PCSCF1_IPADDR := "10.100.0.6"; + + /** @desc integer for SUT - PCSCF1 port number to exchange SIP messages - connection point for UE1 + */ + modulepar integer PX_IMS_SUT_PCSCF1_PORT := 5060; + + /** @desc charstring for SUT/PCSCF1 domain - connection point for UE1 + */ + modulepar charstring PX_IMS_SUT_PCSCF1_HOME_DOMAIN := "plugtests.net"; + + /** @desc charstring for IP address used by the TS to exchange media streams for UE1 + */ + modulepar charstring PX_IMS_SUT_UE1_BEARER_IPADDR := "conftest.plugtests.net"; + + /** @desc charstring for identity of the tester UE1 local domain + */ + modulepar charstring PX_IMS_SUT_UE1_HOME_DOMAIN := "plugtests.net"; + + /** @desc charstring for identity of the tester UE1 local user + */ + modulepar charstring PX_IMS_SUT_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_SUT_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_SUT_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_SUT_UE1_QOP := "auth"; + + /** @desc charstring for home(SUT) REGISTRAR domain of UE1 + */ + modulepar charstring PX_IMS_SUT_UE1_REGISTRAR := "registrar.sut.net"; + + /** @desc charstring for UE1 display name + */ + modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "alice-05@plugtest.net"; + } // End of group SUT_UE1 + + group SUT_UE2 { + /** @desc charstring for SUT - PCSCF2 IP address to exchange SIP messages - connection point for UE2 + */ + modulepar charstring PX_IMS_SUT_PCSCF2_IPADDR := "esrp1.frequentis.plugtests.net"; + + /** @desc integer for SUT - PCSCF2 port number to exchange SIP messages - connection point for UE2 + */ + modulepar integer PX_IMS_SUT_PCSCF2_PORT := 5060; + + /** @desc charstring for SUT/PCSCF2 domain - connection point for UE2 + */ + modulepar charstring PX_IMS_SUT_PCSCF2_HOME_DOMAIN := "plugtests.net"; + + /** @desc charstring for IP address used by the TS to exchange media streams for UE2 + */ + modulepar charstring PX_IMS_SUT_UE2_BEARER_IPADDR := "esrp1.frequentis.plugtests.net"; + + /** @desc charstring for identity of the tester UE2 local domain + */ + modulepar charstring PX_IMS_SUT_UE2_HOME_DOMAIN := "plugtests.net"; + + /** @desc charstring for identity of the tester UE2 local user + */ + modulepar charstring PX_IMS_SUT_UE2_PUBLIC_USER := "2910"; + + /** @desc charstring for RFC 2617 clause 3-2-2 username of UE2: + * The name of user in the specified realm + */ + modulepar charstring PX_IMS_SUT_UE2_PRIVAT_USERNAME := "abcd"; + + /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2 + */ + modulepar charstring PX_IMS_SUT_UE2_PRIVAT_PASSWD := "1234"; + + /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE2: + * 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_SUT_UE2_QOP := "auth"; + + /** @desc charstring for home(SUT) REGISTRAR domain of UE2 + */ + modulepar charstring PX_IMS_SUT_UE2_REGISTRAR := "plugtests.net"; + } // End of group SUT_UE2 + + group SUT_UE3 { + /** @desc charstring for SUT - PCSCF3 IP address to exchange SIP messages - connection point for UE3 + */ + modulepar charstring PX_IMS_SUT_PCSCF3_IPADDR := "172.31.10.2"; + + /** @desc integer for SUT - PCSCF3 port number to exchange SIP messages - connection point for UE3 + */ + modulepar integer PX_IMS_SUT_PCSCF3_PORT := 5060; + + /** @desc charstring for SUT/PCSCF3 domain - connection point for UE3 + */ + modulepar charstring PX_IMS_SUT_PCSCF3_HOME_DOMAIN := "pcscf3.home.net"; + + /** @desc charstring for IP address used by the TS to exchange media streams for UE3 + */ + modulepar charstring PX_IMS_SUT_UE3_BEARER_IPADDR := "172.31.10.2"; + + /** @desc charstring for identity of the tester UE2 local domain + */ + modulepar charstring PX_IMS_SUT_UE3_HOME_DOMAIN := "sut.net"; + + /** @desc charstring for identity of the tester UE3 local user + */ + modulepar charstring PX_IMS_SUT_UE3_PUBLIC_USER := "2910"; + + /** @desc charstring for RFC 2617 clause 3-2-2 username of UE3: + * The name of user in the specified realm + */ + modulepar charstring PX_IMS_SUT_UE3_PRIVAT_USERNAME := "abcd"; + + /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE3 + */ + modulepar charstring PX_IMS_SUT_UE3_PRIVAT_PASSWD := "1234"; + + /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE3: + * 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_SUT_UE3_QOP := "auth"; + + /** @desc charstring for home(SUT) REGISTRAR domain of UE3 + */ + modulepar charstring PX_IMS_SUT_UE3_REGISTRAR := "registrar.sut.net"; + } // End of group SUT_UE3 + + group SUT_UE4 {//UE4 can be used as UE1Visited + /** @desc charstring for SUT - PCSCF4 IP address to exchange SIP messages - connection point for UE4 + */ + modulepar charstring PX_IMS_SUT_PCSCF4_IPADDR := "172.31.10.2"; + + /** @desc integer for SUT - PCSCF4 port number to exchange SIP messages - connection point for UE4 + */ + modulepar integer PX_IMS_SUT_PCSCF4_PORT := 5060; + + /** @desc charstring for SUT/PCSCF4 domain - connection point for UE4 + */ + modulepar charstring PX_IMS_SUT_PCSCF4_HOME_DOMAIN := "pcscf4.home.net"; + + /** @desc charstring for IP address used by the TS to exchange media streams for UE4 + */ + modulepar charstring PX_IMS_SUT_UE4_BEARER_IPADDR := "172.31.10.2"; + + /** @desc charstring for identity of the tester UE2 local domain + */ + modulepar charstring PX_IMS_SUT_UE4_HOME_DOMAIN := "sut.net"; + + /** @desc charstring for identity of the tester UE4 local user + */ + modulepar charstring PX_IMS_SUT_UE4_PUBLIC_USER := "2910"; + + /** @desc charstring for RFC 2617 clause 3-2-2 username of UE4: + * The name of user in the specified realm + */ + modulepar charstring PX_IMS_SUT_UE4_PRIVAT_USERNAME := "abcd"; + + /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2 + */ + modulepar charstring PX_IMS_SUT_UE4_PRIVAT_PASSWD := "1234"; + + /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE4: + * 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_SUT_UE4_QOP := "auth"; + + /** @desc charstring for home(SUT) REGISTRAR domain of UE4 + */ + modulepar charstring PX_IMS_SUT_UE4_REGISTRAR := "registrar.sut.net"; + } // End of group SUT_UE4 + + group SUT_unknown { + /** @desc charstring for identity of unknown UE public user + */ + modulepar charstring PX_IMS_SUT_unknownUE_PUBLIC_USER := "0007"; + } // End of group SUT_unknown + + group EMERGENCY{ + /** @desc charstring for identity of emergency service local domain + */ + modulepar charstring PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "plugtests.net"; + + /** @desc charstring for identity of the emergency service + */ + modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE := "112"; + + /** @desc charstring for identity of the invalid emergency service + */ + modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_INVALID := "service.sos.invalid"; + } // End of group EMERGENCY service + + group SUT_IBCF { + /** @desc charstring for SUT/IBCF1 IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_IBCF1_IPADDR := "172.31.10.5"; + + /** @desc integer for SUT/IBCF1 port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_IBCF1_PORT := 5060; + + /** @desc charstring for SUT/IBCF1 domain + */ + modulepar charstring PX_IMS_SUT_IBCF1_HOME_DOMAIN := "ibcf1.sut.net"; + + /** @desc charstring for SUT/IBCF2 IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_IBCF2_IPADDR := "172.31.10.6"; + + /** @desc integer for SUT/IBCF2 port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_IBCF2_PORT := 5060; + + /** @desc charstring for SUT/IBCF2 domain + */ + modulepar charstring PX_IMS_SUT_IBCF2_HOME_DOMAIN := "ibcf2.sut.net"; + } // End of group SUT_IBCF + + group SUT_PCSCF { + /** @desc charstring for SUT/P-CSCF IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_PCSCF_IPADDR := "172.31.10.2"; + + /** @desc integer for SUT/P-CSCF port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_PCSCF_PORT := 5060; + + /** @desc charstring for SUT/P-CSCFdomain + */ + modulepar charstring PX_IMS_SUT_PCSCF_HOME_DOMAIN := "pcscf.sut.net"; + + /** @desc charstring for SUT/P-CSCF P_VisitedNetwork ID header (see RFC3455) + */ + modulepar charstring PX_IMS_SUT_PCSCF_VisitedNetworkID := "sut token"; + + /** @desc charstring for SUT/P-CSCF Min-SE header lower bound for the session refresh interval (see RFC4028) + */ + modulepar charstring PX_IMS_SUT_PCSCF_MinSE := "100"; + } // End of group SUT_PCSCF + + group SUT_SCSCF { + /** @desc charstring for SUT/S-CSCF IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_SCSCF_IPADDR := "172.31.10.4"; + + /** @desc integer for SUT/S-CSCF port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_SCSCF_PORT := 5060; + + /** @desc charstring for SUT/S-CSCFdomain + */ + modulepar charstring PX_IMS_SUT_SCSCF_HOME_DOMAIN := "scscf.sut.net"; + + /** @desc charstring for SUT/S-CSCF globally used realm name of IUT S-CSCF + */ + modulepar charstring PX_IMS_SUT_SCSCF_REALM := "realm.scscf"; + } // End of group SUT_SCSCF + + group SUT_ICSCF { + /** @desc charstring for SUT/I-CSCF IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_ICSCF_IPADDR := "172.31.10.3"; + + /** @desc integer for SUT/I-CSCF port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_ICSCF_PORT := 5060; + + /** @desc charstring for SUT/I-CSCFdomain + */ + modulepar charstring PX_IMS_SUT_ICSCF_HOME_DOMAIN := "icscf.sut.net"; + } // End of group SUT_ICSCF + + 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.sut.net"; + + } // End of group SUT_AS + + group SUT_IMGCF { + /** @desc charstring for SUT/I-MGCF IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_IMGCF_IPADDR := "172.31.10.10"; + + /** @desc integer for SUT/I-MGCF port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_IMGCF_PORT := 5060; + + /** @desc charstring for SUT/I-MGCFdomain + */ + modulepar charstring PX_IMS_SUT_IMGCF_HOME_DOMAIN := "imgcf.sut.net"; + } // End of group SUT_IMGCF + + group SUT_CONF { + /** + * @desc + * charstring for SUT/conference IP address to exchange SIP messages + */ + modulepar charstring PX_IMS_SUT_CONF_IPADDR := "172.31.10.10"; + /** + * @desc integer for SUT/conference port number to exchange SIP messages + */ + modulepar integer PX_IMS_SUT_CONF_PORT := 5060; + /** + * @desc charstring for SUT/conference domain + */ + modulepar charstring PX_IMS_SUT_CONF_HOME_DOMAIN := "conf.sut.net"; + /** + * @desc charstring for conference factory URI name + */ + modulepar charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name"; + } // End of group SUT_CONF + + } // End of group SUT + + group ts_ue1 { + + /** @desc charstring for IP address used by the UE1 to exchange SIP messages + */ + modulepar charstring PX_IMS_TS_UE1_IPADDR := "conftest.plugtests.net"; + + /** @desc integer for port number used by the UE1 to exchange SIP messages + */ + modulepar integer PX_IMS_TS_UE1_PORT := 5060; + + /** @desc charstring for visited(TS) REGISTRAR domain + */ + modulepar charstring PX_IMS_TS_UE1_REGISTRAR := "plugtests.net"; + + } // End of group ts_ue1 + +} // end module AtsSccas_PIXITS diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index f3bdf93..7855cf5 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1,81 +1,401 @@ -/* - * @author TTF T016 - * @version $Id$ - * @desc This module provides the TCfunctions used by the test component - * for SCCAS tests. - */ -module AtsSccas_TCFunctions { - // 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; - - // AtsIms - // import from AtsIms_TestSystem all; - import from AtsSccas_PICS all; - import from AtsSccas_PIXITS all; - - - group Group_6_3 { - group TP_6_3_1_General { - - /* - * @desc This is the test case function for TC_ISC_SCCAS_RSC_REG_01 - * @param p_cSeq_s - */ - function f_TC_ISC_SCCAS_RSC_REG_01(in CSeq p_cSeq_s) - runs on ImsComponent { - - var template REGISTER_Request v_register; - - 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 function f_TC_ISC_SCCAS_RSC_REG_01 - - }//group TP_6_3_1_General - - }//Group_6_3 - - group Group_6A_4 { - }//Group_6A_4 - - group Group_7_3 { - }//Group_7_3 - - group Group_8_3 { - }//Group_8_3 - - group Group_9_3 { - }//Group_9_3 - - group Group_10_3 { - }//Group_10_3 - - group Group_11_3 { - }//Group_11_3 - -} // end module AtsSccas_TCFunctions \ No newline at end of file +/* + * @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; + + 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; + + // 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); + f_SendREGISTER( + 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 + )); + 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_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; + + // 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); + f_SendREGISTER( + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + omit, + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "0" + )); + 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_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; + + // 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); + f_SendREGISTER( + 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_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), + 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_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; + + // 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); + f_SendREGISTER( + 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_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_SIP_URI }} + }) + }), + 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_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; + + // 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( + -, -, -, -, // 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; + + // 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); + f_SendREGISTER( + 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_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_SIP_URI }} + }) + }), + 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 + + } // End of group Group_6_3 + + group Group_6A_4 { + } // End of group Group_6A_4 + + group Group_7_3 { + } // End of group Group_7_3 + + group Group_8_3 { + } // End of group Group_8_3 + + group Group_9_3 { + } // End of group Group_9_3 + + group Group_10_3 { + } // End of group Group_10_3 + + group Group_11_3 { + } // End of group Group_11_3 + +} // 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 index 847f1e6..a826c38 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -54,7 +54,7 @@ module AtsSccas_TCFunctions_TS124292 { v_cSeq_s, valueof(m_SipUrl_currDomain(vc_userprofile)), PX_IMS_SUT_UE1_QOP, - mw_msc_register( + 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 @@ -69,7 +69,7 @@ module AtsSccas_TCFunctions_TS124292 { )) ), m_expires(600000), // Clause 6.3.2 Initial registration Point 7 - mw_supported_gruu, // Clause 6.3.2 Initial registration Point 8 + 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 )); @@ -103,7 +103,7 @@ module AtsSccas_TCFunctions_TS124292 { v_cSeq_s, valueof(m_SipUrl_currDomain(vc_userprofile)), PX_IMS_SUT_UE1_QOP, - mw_msc_register( + 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 @@ -118,7 +118,7 @@ module AtsSccas_TCFunctions_TS124292 { )) ), m_expires(600000), // Clause 6.3.2 Initial registration Point 7 - mw_supported_gruu, // Clause 6.3.2 Initial registration Point 8 + 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 )); diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index e5418eb..97819df 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -9,67 +9,172 @@ 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; - group HeaderTemplates - { + group HeaderTemplates { - - }//end 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 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 (present) LibSip_SIPTypesAndValues.Contact mw_sccas_contact( + template (present) ContactBody p_contact_body := ? + ) := { + 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 + + } // 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 + } - }//end group request_sent + } // 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 - group msc { - - template (present) LibSip_SIPTypesAndValues.Contact mw_sccas_contact( - template (present) ContactBody p_contact_body := ? - ) := { - contactBody := p_contact_body - } // End of template mw_sccas_contact - - template(value) Supported mw_supported_gruu - modifies m_supported := { - optionsTags := {"gruu"} - } // End of template mw_supported_gruu - - template (present) PAccessNetworkInfo mw_pAccessNetworkInfo := { // TODO To be refined - fieldName := P_ACCESS_NETWORK_INFO_E, - accessType := ?, - genericParams := ? - } // End of template mw_pAccessNetworkInfo - - template (present) REGISTER_Request mw_msc_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 := ? - ) modifies mw_REGISTER_Request_IMS := { - msgHeader := { - contact := p_contact, - authorization := p_authorization, - expires := p_expires, - supported := p_supported, - pAccessNetworkInfo := p_pPAccessNetworkInfo - } - } // End of template mw_msc_register - } - }//end group request_receive - }//end group modified_templates - }//end group MessageTemplates + 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 := ? + ) modifies mw_Response_2xx_Base := { + msgHeader := { + pChargingVector := p_pChargingVector, + contact := p_contact + } + } // End of template mw_sccas_Response_2xxonREGISTER + + } // End of group request_receive + + } // End of group modified_templates + + } // End ofend group MessageTemplates -} // end module AtsSccas_Templates \ No newline at end of file +} // 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 index 515b54b..b9320ce 100644 --- a/ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn @@ -1,306 +1,306 @@ -/* - * @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) - runs on ServerSyncComp - { 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 +/* + * @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) + runs on ServerSyncComp + { 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_TestExecutions.ttcn b/ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn index 6d24f1d..19893d7 100644 --- a/ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn @@ -1,10 +1,10 @@ -/* - * @author TTF T016 - * @version $Id$ - * @desc - */ - -module AtsSccas_TestExecutions -{ - -} // end module AtsSccas_TestExecutions +/* + * @author TTF T016 + * @version $Id$ + * @desc + */ + +module AtsSccas_TestExecutions +{ + +} // end module AtsSccas_TestExecutions diff --git a/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn b/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn index 6a0d31e..15d2c6c 100644 --- a/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn @@ -1,59 +1,59 @@ -/* - * @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; - } - } // end Group TestSystemInterfaces - - - } //end group TestComponents - } //end group SystemConfiguration - -} // end module AtsSccas_TestSystem +/* + * @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; + } + } // 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 index ed84c62..16fc914 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -1,69 +1,172 @@ -/* - * @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 TC_IMST2_GM_GEN_01 - * @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; - 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 TC_ISC_SCCAS_RSC_REG_01 - }//group TP_6_3_1_General - - }//Group_6_3 - - group Group_6A_4 { - }//Group_6A_4 - - group Group_7_3 { - }//Group_7_3 - - group Group_8_3 { - }//Group_8_3 - - group Group_9_3 { - }//Group_9_3 - - group Group_10_3 { - }//Group_10_3 - - group Group_11_3 { - }//Group_11_3 - - -} // end module AtsSccas_Testcases +/* + * @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 TC_IMST2_GM_GEN_01 + * @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; + 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 TC_ISC_SCCAS_RSC_REG_01 + + /* + * @desc TC_IMST2_GM_GEN_02 + * @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; + 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 TC_ISC_SCCAS_RSC_REG_02 + + } // End of group TP_6_3_1_General + + group TP_6_3_2_Triggers_To_ATCF { + + /* + * @desc TC_IMST2_GM_GEN_03 + * @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; + 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 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 TC_IMST2_GM_GEN_04 + * @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; + 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 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 TC_IMST2_GM_GEN_05 + * @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; + 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)); + v_imsComponent_msc.start(f_TC_ISC_SCCAS_RSC_REG_05_msc(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_msc); + + } // end TC_ISC_SCCAS_RSC_REG_05 + + } // End of group TP_6_3_4_Trigger_SRVCC_To_MSC + + } // End of group Group_6_3 + + group Group_6A_4 { + } // End of group Group_6A_4 + + group Group_7_3 { + } // End of group Group_7_3 + + group Group_8_3 { + } // End of group Group_8_3 + + group Group_9_3 { + } // End of group Group_9_3 + + group Group_10_3 { + } // End of group Group_10_3 + + group Group_11_3 { + } // End of group Group_11_3 + + +} // End of module AtsSccas_Testcases diff --git a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn index b1fca4e..6c90d14 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn @@ -1,256 +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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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 +/* + * @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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' 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 -- GitLab From 3d513f793ad6b5c901af1be6b2fcc19d3fc53725 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Thu, 13 Oct 2022 10:43:15 +0200 Subject: [PATCH 088/202] Finalyze REGISTER implementation --- .gitmodules | 4 ++++ titan-test-system-framework | 1 + 2 files changed, 5 insertions(+) create mode 160000 titan-test-system-framework diff --git a/.gitmodules b/.gitmodules index 0199d02..93edb93 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,7 @@ 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/titan-test-system-framework b/titan-test-system-framework new file mode 160000 index 0000000..a49d8da --- /dev/null +++ b/titan-test-system-framework @@ -0,0 +1 @@ +Subproject commit a49d8daee3e5df27198a1902a7c630a84351e427 -- GitLab From 08821079c4b609fb2d6fd759dd2ccdc9783e7684 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Thu, 13 Oct 2022 10:43:21 +0200 Subject: [PATCH 089/202] Finalyze REGISTER implementation --- ttcn/AtsSccas/AtsSccas_PIXITS.ttcn | 27 ++- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 171 ++++++++++++++++-- .../AtsSccas_TCFunctions_TS124292.ttcn | 2 +- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 23 ++- ttcn/AtsSccas/AtsSccas_TestSystem.ttcn | 11 +- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 49 +++-- 6 files changed, 241 insertions(+), 42 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn index 51fa338..5a4d5ab 100644 --- a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn @@ -4,21 +4,28 @@ * @desc This module provides the PIXIT used for the SIP-IMS tests. */ -module AtsSccas_PIXITS -{ +module AtsSccas_PIXITS { + //LibSip + import from LibSip_SIPTypesAndValues all; -// SUT specific implementation variants + // SUT specific implementation variants -modulepar { + modulepar { - /** @desc boolean for SUT working mode due to - */ - boolean PX_SCCAS__ := true; + /** @desc boolean for SUT working mode due to + */ + boolean PX_SCCAS__ := true; - charstring PX_SIP_URI := ""; - -} + charstring PX_ACTF_MGMT_URI := ""; + + charstring PX_ACTF_URI := ""; + + charstring PX_ICSI_URI := ""; + + SipUrl PX_SCCAS_URI := {scheme := "c_sipScheme", components := {sip := {userInfo := omit, hostPort := {host := "",portField := c_defaultSipPort}}}}; + + } group SUT { diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 7855cf5..cc12981 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -124,7 +124,7 @@ module AtsSccas_TCFunctions { omit, PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "0" + "0" // Expired )); tc_ack.start; alt { @@ -245,7 +245,7 @@ module AtsSccas_TCFunctions { m_fcValue( "g-3gpp-atcf-mgmt-uri-in-path", { - {"sip-uri", { tokenOrHost := PX_SIP_URI }} + {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} }) }), m_contentType(c_sdpApplication), // TODO To be refined during validation @@ -253,7 +253,18 @@ module AtsSccas_TCFunctions { )); tc_ack.start; alt { - [] SIPP.receive(mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + [] 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) + ) + )) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync @@ -283,7 +294,9 @@ module AtsSccas_TCFunctions { LibIms_Steps.f_setHeadersMESSAGE(v_cSeq_s, vc_from.addressField.addrSpecUnion, vc_to.addressField.addrSpecUnion); f_awaitingMESSAGE( mw_sccas_MESSAGE_Request( - -, -, -, -, // TODO To be refined during validation + -, -, + 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 ) @@ -307,6 +320,7 @@ module AtsSccas_TCFunctions { runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; + var Contact v_contact; // Preambule f_init_userprofile(c_userProfile_UE1atSUThome); @@ -317,6 +331,17 @@ module AtsSccas_TCFunctions { // Registration f_setHeaders_REGISTER(v_cSeq_s); + v_contact := valueof(vc_contact); + v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation + { + "g.3gpp.atcf-mgmt-uri", + {tokenOrHost := PX_ACTF_MGMT_URI} + }, + { + "g.3gpp.path", + {tokenOrHost := PX_ACTF_URI} + } + }; f_SendREGISTER( m_sccas_register( vc_requestUri, @@ -325,22 +350,22 @@ module AtsSccas_TCFunctions { vc_from, vc_to, vc_via_REG, - vc_contact, + v_contact, m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), + vc_authorization, + {c_Integrity_protected_no} + ), PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation "600000", - m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri + -/*m_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", + "g-3gpp-atcf-mgmt-uri\", { - {"sip-uri", { tokenOrHost := PX_SIP_URI }} + {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} }) - }), + })*/, // TODO To be refined during validation m_contentType(c_sdpApplication), // TODO To be refined during validation m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation )); @@ -378,6 +403,128 @@ module AtsSccas_TCFunctions { } // End of group TP_6_3_4_Trigger_SRVCC_To_MSC + group TP_6_3_5_Providing_SRVCC_To_MSC { + + /** + * @desc Verify that the SCCAS successfully provide CS to PS SRVCC information + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_RSC_REG_06_ueims(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + var Contact v_contact; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + action("Please register UE") + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_setHeaders_REGISTER(v_cSeq_s); + v_contact := valueof(vc_contact); + v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation + { + "g.3gpp.icsi-ref", + {tokenOrHost := PX_ICSI_URI} + } + }; + f_SendREGISTER( + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + v_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -/*m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri + { + m_fcValue( + "g-3gpp-atcf-mgmt-uri-in-path", + { + {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} + }) + })*/, // TODO To be refined during validation + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_sccas_Response_2xxonREGISTER( + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation + mw_PAssertedID( + mw_PAssertedIDValue(PX_SCCAS_URI) + ), // TODO To be refined during validation + mw_acceptContact( + { // TODO To be refined during validation + { + "g.3gpp.path-media", + {tokenOrHost := PX_ICSI_URI} + } + } + ) + )) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_RSC_REG_06_ueims + + function f_TC_ISC_SCCAS_RSC_REG_06_msc(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Message + LibIms_Steps.f_setHeadersMESSAGE(v_cSeq_s, vc_from.addressField.addrSpecUnion, vc_to.addressField.addrSpecUnion); + f_awaitingMESSAGE( + mw_sccas_MESSAGE_Request( + -, -, + mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation + -, + m_contentType("application/vnd.3gpp.SRVCC-info+xml"), // TODO To be refined during validation + ? // TODO To be refined during validation + ) + ); + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // Answer to the MESSAGE + f_send200OK(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + } // end function f_TC_ISC_SCCAS_RSC_REG_06_msc + + } // End of group TP_6_3_5_Providing_SRVCC_To_MSC + } // End of group Group_6_3 group Group_6A_4 { diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn index a826c38..1db4dde 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -56,7 +56,7 @@ module AtsSccas_TCFunctions_TS124292 { PX_IMS_SUT_UE1_QOP, mw_sccas_register( -, - mw_pChargingVector(-, *), // TODO To be refined during validation - Clause 6.3.2 Initial registration Point 11 + 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 diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 97819df..3eb5b93 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -62,8 +62,22 @@ module AtsSccas_Templates 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 (present) ContactBody p_contact_body := ?, + template SemicolonParam_List p_contactParams := * ) := { contactBody := p_contact_body } // End of template mw_sccas_contact @@ -163,11 +177,14 @@ module AtsSccas_Templates template (present) To p_to := ?, template (present) Via p_via := ?, template (present) Contact p_contact := ?, - template (present) PChargingVector p_pChargingVector := ? + 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 + contact := p_contact, + acceptContact := p_acceptContact } } // End of template mw_sccas_Response_2xxonREGISTER diff --git a/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn b/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn index 15d2c6c..4864174 100644 --- a/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TestSystem.ttcn @@ -25,17 +25,17 @@ module AtsSccas_TestSystem type charstring CM_Message; } // end group CMTypes - group Signatures { + /*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 + }*/ // end group Signatures group SystemConfiguration { group Ports { - type port operatorPort_SIP procedure { + /*type port operatorPort_SIP procedure { inout s_SIP_conversation; - inout s_SIP_ringing}; + inout s_SIP_ringing};*/ type port Coordination message { inout CM_Message} with {extension "internal"}; @@ -48,7 +48,8 @@ module AtsSccas_TestSystem */ type component TestAdapter { port SipPort UEIMS, SCCAS, ATCF, MSC, UE1; - port operatorPort_SIP opPortS; + //port operatorPort_SIP opPortS; + port OperatorPort opPortS; } } // end Group TestSystemInterfaces diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 16fc914..562e704 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -26,7 +26,7 @@ module AtsSccas_Testcases group TP_6_3_1_General { /* - * @desc TC_IMST2_GM_GEN_01 + * @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) @@ -44,10 +44,10 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // end TC_ISC_SCCAS_RSC_REG_01 + } // End of TC_ISC_SCCAS_RSC_REG_01 /* - * @desc TC_IMST2_GM_GEN_02 + * @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) @@ -65,14 +65,14 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // end TC_ISC_SCCAS_RSC_REG_02 + } // 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 TC_IMST2_GM_GEN_03 + * @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) @@ -90,14 +90,14 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // end TC_ISC_SCCAS_RSC_REG_03 + } // 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 TC_IMST2_GM_GEN_04 + * @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) @@ -117,14 +117,14 @@ module AtsSccas_Testcases f_cf_1Isc1AtcfDown(v_imsComponent_ueims, v_imsComponent_atcf); - } // end TC_ISC_SCCAS_RSC_REG_04 + } // 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 TC_IMST2_GM_GEN_05 + * @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) @@ -137,17 +137,44 @@ module AtsSccas_Testcases //Start f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_RSC_REG_05_ueims(p_cSeq_s)); - v_imsComponent_msc.start(f_TC_ISC_SCCAS_RSC_REG_05_msc(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 TC_ISC_SCCAS_RSC_REG_05 + } // 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; + 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 { -- GitLab From e0fa6e0f16a54045a68cd6762888489c3c68b46c Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Fri, 14 Oct 2022 14:00:00 +0200 Subject: [PATCH 090/202] Finalyze REGISTER test cases --- ttcn/AtsSccas/AtsSccas_PICS.ttcn | 2 +- ttcn/AtsSccas/AtsSccas_TestControl.ttcn | 39 ++++++++++++++++++++ ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn | 10 ----- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 43 ++++++++++++++++++++++ 4 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 ttcn/AtsSccas/AtsSccas_TestControl.ttcn delete mode 100644 ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn diff --git a/ttcn/AtsSccas/AtsSccas_PICS.ttcn b/ttcn/AtsSccas/AtsSccas_PICS.ttcn index 0e2df8c..b64fade 100644 --- a/ttcn/AtsSccas/AtsSccas_PICS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PICS.ttcn @@ -15,7 +15,7 @@ PICS used for test case selection /** @desc boolean PICS ref: A-3/5 True, if SUT/SCSCF requires ... */ - boolean PC_SCCAS_TODO := false; + boolean PICS_SCCAS_GM := false; boolean PICS_MSC_GM := false; } diff --git a/ttcn/AtsSccas/AtsSccas_TestControl.ttcn b/ttcn/AtsSccas/AtsSccas_TestControl.ttcn new file mode 100644 index 0000000..a7ca1cf --- /dev/null +++ b/ttcn/AtsSccas/AtsSccas_TestControl.ttcn @@ -0,0 +1,39 @@ +/* + * @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_GM == 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)); + } + + if (PICS_MSC_GM == 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_TestExecutions.ttcn b/ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn deleted file mode 100644 index 19893d7..0000000 --- a/ttcn/AtsSccas/AtsSccas_TestExecutions.ttcn +++ /dev/null @@ -1,10 +0,0 @@ -/* - * @author TTF T016 - * @version $Id$ - * @desc - */ - -module AtsSccas_TestExecutions -{ - -} // end module AtsSccas_TestExecutions diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 562e704..b975513 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -34,6 +34,14 @@ module AtsSccas_Testcases system TestAdapter { //Variables var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + stop; + } + + // Test component configuration f_cf_1IscUp(v_imsComponent_ueims); //Start @@ -55,6 +63,13 @@ module AtsSccas_Testcases system TestAdapter { //Variables var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + stop; + } + f_cf_1IscUp(v_imsComponent_ueims); //Start @@ -80,6 +95,13 @@ module AtsSccas_Testcases system TestAdapter { //Variables var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + stop; + } + f_cf_1IscUp(v_imsComponent_ueims); //Start @@ -106,6 +128,13 @@ module AtsSccas_Testcases //Variables var ImsComponent v_imsComponent_ueims; var ImsComponent v_imsComponent_atcf; + + // Test control + if (not PICS_SCCAS_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + stop; + } + f_cf_1Isc1AtcfUp(v_imsComponent_ueims, v_imsComponent_atcf); //Start @@ -133,6 +162,13 @@ module AtsSccas_Testcases //Variables var ImsComponent v_imsComponent_ueims; var ImsComponent v_imsComponent_msc; + + // Test control + if (not PICS_SCCAS_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + stop; + } + f_cf_1Isc1AtcfUp(v_imsComponent_ueims, v_imsComponent_msc); //Start @@ -160,6 +196,13 @@ module AtsSccas_Testcases //Variables var ImsComponent v_imsComponent_ueims; var ImsComponent v_imsComponent_msc; + + // Test control + if (not PICS_SCCAS_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + stop; + } + f_cf_1Isc1AtcfUp(v_imsComponent_ueims, v_imsComponent_msc); //Start -- GitLab From 41b3f688219d0ba5dbe3547ea1fde5c617e7a530 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Mon, 17 Oct 2022 16:12:39 +0200 Subject: [PATCH 091/202] Errors resolved --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 12 ++++++------ ttcn/AtsSccas/AtsSccas_Templates.ttcn | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index cc12981..ed38d5d 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -52,7 +52,7 @@ module AtsSccas_TCFunctions { f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE") + action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration @@ -107,7 +107,7 @@ module AtsSccas_TCFunctions { f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE") + action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration @@ -160,7 +160,7 @@ module AtsSccas_TCFunctions { f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE") + action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration @@ -219,7 +219,7 @@ module AtsSccas_TCFunctions { f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE") + action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration @@ -326,7 +326,7 @@ module AtsSccas_TCFunctions { f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE") + action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration @@ -419,7 +419,7 @@ module AtsSccas_TCFunctions { f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE") + action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 3eb5b93..b8c18ec 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -79,6 +79,7 @@ module AtsSccas_Templates template (present) ContactBody p_contact_body := ?, template SemicolonParam_List p_contactParams := * ) := { + fieldName := CONTACT_E, contactBody := p_contact_body } // End of template mw_sccas_contact -- GitLab From df2b450c7751e32323bb201b122f4c27d1b6e411 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Mon, 17 Oct 2022 15:35:07 +0200 Subject: [PATCH 092/202] Errors resolved --- ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn index 1db4dde..e99fa18 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -46,7 +46,7 @@ module AtsSccas_TCFunctions_TS124292 { f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE") + action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration @@ -95,7 +95,7 @@ module AtsSccas_TCFunctions_TS124292 { f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE") + action("Please register UE"); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration @@ -324,8 +324,8 @@ module AtsSccas_TCFunctions_TS124292 { // Check vc_request.msgHeader.contact for 3GPP requirement function f_check_contact_msc(in Contact p_contact) runs on ImsComponent { - if (ispresent(p_contact.contactBody.wildcard) == false) { - log("f_check_contact_msc: FAIL: Invalid contact content") + if (ischosen(p_contact.contactBody.wildcard) == false) { + log("f_check_contact_msc: FAIL: Invalid contact content"); f_setVerdict(e_error); return; } @@ -333,7 +333,7 @@ module AtsSccas_TCFunctions_TS124292 { // 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") + 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; } @@ -341,7 +341,7 @@ module AtsSccas_TCFunctions_TS124292 { // 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") + 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; } @@ -349,7 +349,7 @@ module AtsSccas_TCFunctions_TS124292 { // 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") + log("f_check_contact_msc: FAIL: reg-id should not be present"); f_setVerdict(e_error); // reg-id should not be present return; } -- GitLab From e6701dcbdd846b122a880754363ebda06e20e329 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Tue, 18 Oct 2022 11:42:21 +0200 Subject: [PATCH 093/202] Temp subgroups added for development --- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index b8c18ec..122bc0d 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -89,6 +89,21 @@ module AtsSccas_Templates genericParams := ? } // End of template mw_pAccessNetworkInfo + group HeaderTemplatesAxel { + } + + group HeaderTemplatesSteffen { + } + + group HeaderTemplatesBostjan { + } + + group HeaderTemplatesIztok { + } + + group HeaderTemplatesYann { + } + } // End of group HeaderTemplates group MessageTemplates { @@ -122,6 +137,20 @@ module AtsSccas_Templates }, messageBody := p_mb } + group request_sent_Axel { + } + + group request_sent_Steffen { + } + + group request_sent_Bostjan { + } + + group request_sent_Iztok { + } + + group request_sent_Yann { + } } // End of group request_sent @@ -188,6 +217,22 @@ module AtsSccas_Templates acceptContact := p_acceptContact } } // End of template mw_sccas_Response_2xxonREGISTER + + + group request_receive_Axel { + } + + group request_receive_Steffen { + } + + group request_receive_Bostjan { + } + + group request_receive_Iztok { + } + + group request_receive_Yann { + } } // End of group request_receive -- GitLab From efdf6995bd9068bb296bc0ba7141af45f330f222 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Tue, 18 Oct 2022 12:07:12 +0200 Subject: [PATCH 094/202] Add skeletton for TC_ISC_SCCAS_GEN_INV_01 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 99 ++++++++++++++++++- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 58 +++++++++-- ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn | 9 +- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 57 ++++++++--- 4 files changed, 195 insertions(+), 28 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index ed38d5d..b389856 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -34,6 +34,7 @@ module AtsSccas_TCFunctions { import from AtsSccas_Steps all; import from AtsSccas_PICS all; import from AtsSccas_PIXITS all; + import from AtsSccas_TestConfiguration all; group Group_6_3 { @@ -528,6 +529,79 @@ module AtsSccas_TCFunctions { } // End of group Group_6_3 group Group_6A_4 { + + group TP_6A_4_2_SIP_INVITE_request { + + /** + * @desc Verify that the SCCAS send INVITE for anchored user populated with FeatureCaps header + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_GEN_INV_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_sccas_Response_2xxonINVITE(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_GEN_INV_01 + + } // End of group TP_6A_4_2_SIP_INVITE_request + } // End of group Group_6A_4 group Group_7_3 { @@ -544,5 +618,28 @@ module AtsSccas_TCFunctions { group Group_11_3 { } // End of group Group_11_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_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 122bc0d..747a4cc 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -152,6 +152,26 @@ module AtsSccas_Templates group request_sent_Yann { } + 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 + ) modifies m_INVITE_Request_UE := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := m_contentType(c_sdpApplication) + }, + messageBody := p_mb + } + } // End of group request_sent group request_receive { @@ -201,16 +221,16 @@ module AtsSccas_Templates } // 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 := { + 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, @@ -234,6 +254,24 @@ module AtsSccas_Templates group request_receive_Yann { } + 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 diff --git a/ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn b/ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn index b9320ce..6b3848c 100644 --- a/ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TestConfiguration.ttcn @@ -26,11 +26,10 @@ 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) - runs on ServerSyncComp - { loc_CSeq.seqNumber := loc_CSeq.seqNumber + 1000; - return - }; + function f_IncCSeq(inout CSeq loc_CSeq) { + loc_CSeq.seqNumber := loc_CSeq.seqNumber + 1000; + return + }; // end f_IncCSeq }//end group auxSipFunction diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index b975513..ff828bf 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -221,22 +221,55 @@ module AtsSccas_Testcases } // End of group Group_6_3 group Group_6A_4 { - } // End of 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + + } // End of group Group_6A_4 - group Group_7_3 { - } // End of group Group_7_3 + group Group_7_3 { + } // End of group Group_7_3 - group Group_8_3 { - } // End of group Group_8_3 + group Group_8_3 { + } // End of group Group_8_3 - group Group_9_3 { - } // End of group Group_9_3 + group Group_9_3 { + } // End of group Group_9_3 - group Group_10_3 { - } // End of group Group_10_3 + group Group_10_3 { + } // End of group Group_10_3 - group Group_11_3 { - } // End of group Group_11_3 + group Group_11_3 { + } // End of group Group_11_3 - } // End of module AtsSccas_Testcases -- GitLab From b48d06bd9290414512aee9de50d31a757c964e97 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 12:33:55 +0200 Subject: [PATCH 095/202] new group for section 12.3 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index ff828bf..02dbf79 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -271,5 +271,8 @@ module AtsSccas_Testcases group Group_11_3 { } // End of group Group_11_3 + + group Group_12_3 { + } // End of group Group_12_3 } // End of module AtsSccas_Testcases -- GitLab From a092ca20b95147c0a7b1a51fc9dc856149aadfac Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 12:36:05 +0200 Subject: [PATCH 096/202] new group for section 12.3 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 02dbf79..7bd1b47 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -272,7 +272,7 @@ module AtsSccas_Testcases group Group_11_3 { } // End of group Group_11_3 - group Group_12_3 { - } // End of group Group_12_3 + group Group_12_3 { + } // End of group Group_12_3 } // End of module AtsSccas_Testcases -- GitLab From ae5d488ec557ea2543b528c74adf4e807e50e908 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 12:42:31 +0200 Subject: [PATCH 097/202] new group for section 12.3 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index b389856..229f756 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -618,6 +618,9 @@ module AtsSccas_TCFunctions { group Group_11_3 { } // End of group Group_11_3 + + group Group_12_3 { + } // End of group Group_12_3 group helpers { -- GitLab From 33dcc89272d13ea5319e8734ec0907609ae6354a Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 13:03:03 +0200 Subject: [PATCH 098/202] template for f_TC_ISC_SCCAS_CON_RIN_01 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 69 +++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 229f756..5ce45b4 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -617,6 +617,75 @@ module AtsSccas_TCFunctions { } // End of group Group_10_3 group Group_11_3 { + + /** + * @desc Verify that the SCC AS successfully processes an INVITE that includes an active speech media component using CS bearer. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + 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 + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CON_RIN_01 + } // End of group Group_11_3 group Group_12_3 { -- GitLab From 7e5af97f518375e9a89d5e5a212fde00ef2edd81 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 13:16:49 +0200 Subject: [PATCH 099/202] template for TC_ISC_SCCAS_CON_RIN_01 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 7bd1b47..4ffcc25 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -270,6 +270,36 @@ module AtsSccas_Testcases } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + } // End of group Group_11_3 group Group_12_3 { -- GitLab From ca4128bb734cf00e9b77bf9e4fc63e054e31c746 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 15:04:10 +0200 Subject: [PATCH 100/202] template for f_TC_ISC_SCCAS_CON_RIN_03 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 69 +++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 5ce45b4..858f0d8 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -685,6 +685,75 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CON_RIN_01 + + /** + * @desc Verify that the SCC AS rejects an INVITE due missing ability to associate it to an ongoing or different SIP dialog. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine480)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CON_RIN_03 + } // End of group Group_11_3 -- GitLab From 0bee25a3a15def7c9ae01aa1494bca3c3a7ddb68 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 15:04:24 +0200 Subject: [PATCH 101/202] template for TC_ISC_SCCAS_CON_RIN_03 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 4ffcc25..ed66dca 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -299,6 +299,35 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); } // End of TC_ISC_SCCAS_CON_RIN_01 + + /* + * @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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 -- GitLab From b99021de9d7fb31a97ba02d594680bc299eb2a09 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 15:23:13 +0200 Subject: [PATCH 102/202] template for f_TC_ISC_SCCAS_CON_RIN_02 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 70 ++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 858f0d8..eadac59 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -660,7 +660,7 @@ module AtsSccas_TCFunctions { // 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( + m_sccas_invite( // TODO request active speech media component using CS bearer vc_requestUri, vc_callId, p_cSeq_s, @@ -686,6 +686,74 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_CON_RIN_01 + /** + * @desc Verify that the SCC AS successfully processes an INVITE due to two STIs on the Target Access Leg. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request CS -> PS + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,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 + } + } + + // TODO Deregistration? + 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 -- GitLab From be504753a2bcc98596c55b4a4ff6e7a2ee8c9bd6 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 15:23:23 +0200 Subject: [PATCH 103/202] template for TC_ISC_SCCAS_CON_RIN_02 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index ed66dca..a278988 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -300,6 +300,35 @@ module AtsSccas_Testcases } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_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 -- GitLab From 692991c20e3aec451b9afc393b39058e40904b57 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 15:53:17 +0200 Subject: [PATCH 104/202] template for TC_ISC_SCCAS_PCT_INV_06 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index a278988..e4615c2 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -361,6 +361,36 @@ module AtsSccas_Testcases } // End of group Group_11_3 group Group_12_3 { + + /* + * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for terminating call in pre-alerting phase using PS to CS SRVCC procedure. + * @param p_cSeq_s 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + } // End of group Group_12_3 } // End of module AtsSccas_Testcases -- GitLab From bf146016218d37c33eafe811b4e7d1dda003471d Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 15:53:43 +0200 Subject: [PATCH 105/202] template for f_TC_ISC_SCCAS_PCT_INV_06 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 70 +++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index eadac59..c01a41f 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -826,6 +826,76 @@ module AtsSccas_TCFunctions { } // End of group Group_11_3 group Group_12_3 { + + + /** + * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for terminating call in pre-alerting phase using PS to CS SRVCC procedure. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PCT_INV_06(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PCT_INV_06 + } // End of group Group_12_3 group helpers { -- GitLab From 05042d928e66b8f77dafbb5294eb2333ee620073 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 16:05:39 +0200 Subject: [PATCH 106/202] template for f_TC_ISC_SCCAS_PCT_INV_02 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 70 ++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index c01a41f..30f4ad8 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -875,7 +875,7 @@ module AtsSccas_TCFunctions { vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, - vc_contact, + vc_contact, // TODO g3gppps2csSrvccTermPreAlerting -, -, -, m_MBody_SDP(vc_sdp_local) )); @@ -895,6 +895,74 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PCT_INV_06 + + /** + * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for originating call in pre-alerting phase using PS to CS SRVCC procedure. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PCT_INV_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, // TODO g3gppPs2csSrvccOrigPreAlerting + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PCT_INV_02 } // End of group Group_12_3 -- GitLab From 3fa54aac34aef9c4a03ab7a30ad1f7a98ccf4477 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 16:05:48 +0200 Subject: [PATCH 107/202] template for TC_ISC_SCCAS_PCT_INV_02 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index e4615c2..8d538c7 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -390,6 +390,35 @@ module AtsSccas_Testcases 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 } // End of group Group_12_3 -- GitLab From 40773104889c721c045ad5afbd4e1e68a0db8b13 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 16:35:34 +0200 Subject: [PATCH 108/202] template for TC_ISC_SCCAS_PCT_INV_03 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 8d538c7..57832ed 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -419,6 +419,35 @@ module AtsSccas_Testcases 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 } // End of group Group_12_3 -- GitLab From ee3b3099afec36305310c182880bfdd4d93f1183 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 16:35:42 +0200 Subject: [PATCH 109/202] template for f_TC_ISC_SCCAS_PCT_INV_03 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 67 +++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 30f4ad8..388c552 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -963,6 +963,73 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PCT_INV_02 + + /** + * @desc Verify that SCC AS correctly procedures for PS to CS access transfer of additional call. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PCT_INV_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_18x_Base( + c_statusLine183, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_REFER_Request(?,vc_requestUri,vc_requestUri2)) { + 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 + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PCT_INV_03 } // End of group Group_12_3 -- GitLab From 38ce635dfebb21c5ee60da198a62b11aa4d288a1 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 17:02:55 +0200 Subject: [PATCH 110/202] template for f_TC_ISC_SCCAS_MED_OPT_01 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 81 ++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 388c552..9f97cf4 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -965,7 +965,7 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_PCT_INV_02 /** - * @desc Verify that SCC AS correctly procedures for PS to CS access transfer of additional call. + * @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) @@ -1016,7 +1016,7 @@ module AtsSccas_TCFunctions { )); tc_ack.start; alt { - [] SIPP.receive(mw_REFER_Request(?,vc_requestUri,vc_requestUri2)) { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: REFER message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync @@ -1030,6 +1030,73 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PCT_INV_03 + + /** + * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_MED_OPT_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendOPTIONS( + m_OPTIONS_Request_Base( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 response was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_MED_OPT_01 } // End of group Group_12_3 @@ -1054,6 +1121,16 @@ module AtsSccas_TCFunctions { } // End of function f_sendRegistrationAndAwait200Ok + /** + * @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 of group helpers } // End of module AtsSccas_TCFunctions \ No newline at end of file -- GitLab From 6f13672f7defac25cbd6ba548662fd9e37948d27 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 17:03:13 +0200 Subject: [PATCH 111/202] template for TC_ISC_SCCAS_MED_OPT_01 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 57832ed..1bc657a 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -448,6 +448,35 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); } // End of TC_ISC_SCCAS_PCT_INV_03 + + /* + * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. + * @param p_cSeq_s 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 } // End of group Group_12_3 -- GitLab From 067d203bd60802deaebadf9129f680502e0ca65a Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 17:15:19 +0200 Subject: [PATCH 112/202] template for TC_ISC_SCCAS_CPT_INV_07 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 1bc657a..0da8b6e 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -477,6 +477,35 @@ module AtsSccas_Testcases 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 } // End of group Group_12_3 -- GitLab From e74c140d8138aefcd508dcbdd9313a9299bbd5f6 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 17:15:36 +0200 Subject: [PATCH 113/202] template for f_TC_ISC_SCCAS_CPT_INV_07 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 68 +++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 9f97cf4..388807e 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1097,6 +1097,74 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_MED_OPT_01 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of session with active speech media component. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_07(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_07 } // End of group Group_12_3 -- GitLab From 2380c9824b46d39f3e51a96f39c7041a1dd0fd1c Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 17:24:17 +0200 Subject: [PATCH 114/202] template for f_TC_ISC_SCCAS_CPT_INV_08 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 68 +++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 388807e..61b717c 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1165,6 +1165,74 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_07 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of session with inactive speech media component. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_08(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_08 } // End of group Group_12_3 -- GitLab From 228e848cc4371ba722646213926fea90a96db567 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 17:24:26 +0200 Subject: [PATCH 115/202] template for TC_ISC_SCCAS_CPT_INV_08 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 0da8b6e..3959445 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -506,6 +506,35 @@ module AtsSccas_Testcases 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 } // End of group Group_12_3 -- GitLab From d3af470cc758779efc90af2ad8f6e8a60f025368 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 17:32:14 +0200 Subject: [PATCH 116/202] template for TC_ISC_SCCAS_CPT_INV_09 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 3959445..0c7fddd 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -535,6 +535,35 @@ module AtsSccas_Testcases 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_09 } // End of group Group_12_3 -- GitLab From 4df3b039099475eed60069df6c9afd199082f141 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 17:32:22 +0200 Subject: [PATCH 117/202] template for f_TC_ISC_SCCAS_CPT_INV_09 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 69 ++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 61b717c..7f8346f 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1018,7 +1018,7 @@ module AtsSccas_TCFunctions { alt { [] SIPP.receive(mw_Response_Base(c_statusLine200)) { tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: REFER message was received ***"); + log("*** " & __SCOPE__ & ": PASS: response 200 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { @@ -1233,6 +1233,73 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_08 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of originating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_09(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine180)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_09 } // End of group Group_12_3 -- GitLab From 70a177808a40c28a069eed7d3108e2e5dbadc4e7 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 17:36:14 +0200 Subject: [PATCH 118/202] template for TC_ISC_SCCAS_CPT_INV_10 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 31 ++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 0c7fddd..6938292 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -556,7 +556,7 @@ module AtsSccas_Testcases 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)); + 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}); @@ -564,6 +564,35 @@ module AtsSccas_Testcases 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 } // End of group Group_12_3 -- GitLab From 47a0afe3e732a7476fde78b6dae8bca073a4c257 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Tue, 18 Oct 2022 17:36:26 +0200 Subject: [PATCH 119/202] template for f_TC_ISC_SCCAS_CPT_INV_10 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 67 +++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 7f8346f..4117c64 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1300,6 +1300,73 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_09 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of terminating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_10(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_10 } // End of group Group_12_3 -- GitLab From 4dc6da8bd33ef9eb5ecb3252204a223a1bf6ec1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Tue, 18 Oct 2022 18:02:39 +0200 Subject: [PATCH 120/202] first draft TC 9.3 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 2836 ++++++++++++----------- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 639 ++--- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 1231 +++++----- 3 files changed, 2422 insertions(+), 2284 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 4117c64..74e2be9 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1,1406 +1,1432 @@ -/* - * @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; - - // 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); - f_SendREGISTER( - 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 - )); - 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_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; - - // 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); - f_SendREGISTER( - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - omit, - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "0" // Expired - )); - 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_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; - - // 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); - f_SendREGISTER( - 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_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), - 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_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; - - // 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); - f_SendREGISTER( - 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_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri - { - m_fcValue( - "g-3gpp-atcf-mgmt-uri-in-path", - { - {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} - }) - }), - 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) - ) - )) { - 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; - - // 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 of function f_TC_ISC_SCCAS_RSC_REG_04_atcf - - } // End of group TP_6_3_3_SRVCC_Information_To_ATCF - - group TP_6_3_4_Trigger_SRVCC_To_MSC { - - /** - * @desc Verify that the SCCAS successfully get CS to PS SRVCC information - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_RSC_REG_05_ueims(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - var Contact v_contact; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE"); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_setHeaders_REGISTER(v_cSeq_s); - v_contact := valueof(vc_contact); - v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation - { - "g.3gpp.atcf-mgmt-uri", - {tokenOrHost := PX_ACTF_MGMT_URI} - }, - { - "g.3gpp.path", - {tokenOrHost := PX_ACTF_URI} - } - }; - f_SendREGISTER( - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - v_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -/*m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri - { - m_fcValue( - "g-3gpp-atcf-mgmt-uri\", - { - {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} - }) - })*/, // TODO To be refined during validation - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_RSC_REG_05_ueims - - function f_TC_ISC_SCCAS_RSC_REG_05_msc(in CSeq p_cSeq_s) - runs on ImsComponent { - - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - - f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync - - // deregistration - - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // end function f_TC_ISC_SCCAS_RSC_REG_05_msc - - } // End of group TP_6_3_4_Trigger_SRVCC_To_MSC - - group TP_6_3_5_Providing_SRVCC_To_MSC { - - /** - * @desc Verify that the SCCAS successfully provide CS to PS SRVCC information - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_RSC_REG_06_ueims(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - var Contact v_contact; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE"); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_setHeaders_REGISTER(v_cSeq_s); - v_contact := valueof(vc_contact); - v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation - { - "g.3gpp.icsi-ref", - {tokenOrHost := PX_ICSI_URI} - } - }; - f_SendREGISTER( - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - v_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -/*m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri - { - m_fcValue( - "g-3gpp-atcf-mgmt-uri-in-path", - { - {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} - }) - })*/, // TODO To be refined during validation - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_sccas_Response_2xxonREGISTER( - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation - mw_PAssertedID( - mw_PAssertedIDValue(PX_SCCAS_URI) - ), // TODO To be refined during validation - mw_acceptContact( - { // TODO To be refined during validation - { - "g.3gpp.path-media", - {tokenOrHost := PX_ICSI_URI} - } - } - ) - )) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_RSC_REG_06_ueims - - function f_TC_ISC_SCCAS_RSC_REG_06_msc(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Message - LibIms_Steps.f_setHeadersMESSAGE(v_cSeq_s, vc_from.addressField.addrSpecUnion, vc_to.addressField.addrSpecUnion); - f_awaitingMESSAGE( - mw_sccas_MESSAGE_Request( - -, -, - mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation - -, - m_contentType("application/vnd.3gpp.SRVCC-info+xml"), // TODO To be refined during validation - ? // TODO To be refined during validation - ) - ); - f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync - - // Answer to the MESSAGE - f_send200OK(); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - } // end function f_TC_ISC_SCCAS_RSC_REG_06_msc - - } // End of group TP_6_3_5_Providing_SRVCC_To_MSC - - } // End of group Group_6_3 - - group Group_6A_4 { - - group TP_6A_4_2_SIP_INVITE_request { - - /** - * @desc Verify that the SCCAS send INVITE for anchored user populated with FeatureCaps header - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_GEN_INV_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_sccas_Response_2xxonINVITE(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_GEN_INV_01 - - } // End of group TP_6A_4_2_SIP_INVITE_request - - } // End of group Group_6A_4 - - group Group_7_3 { - } // End of group Group_7_3 - - group Group_8_3 { - } // End of group Group_8_3 - - group Group_9_3 { - } // End of group Group_9_3 - - group Group_10_3 { - } // End of group Group_10_3 - - group Group_11_3 { - - /** - * @desc Verify that the SCC AS successfully processes an INVITE that includes an active speech media component using CS bearer. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CON_RIN_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO request active speech media component using CS bearer - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_INVITE_Request(?,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 - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CON_RIN_01 - - /** - * @desc Verify that the SCC AS successfully processes an INVITE due to two STIs on the Target Access Leg. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CON_RIN_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO request CS -> PS - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_INVITE_Request(?,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 - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CON_RIN_02 - - /** - * @desc Verify that the SCC AS rejects an INVITE due missing ability to associate it to an ongoing or different SIP dialog. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CON_RIN_03(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine480)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CON_RIN_03 - - - } // End of group Group_11_3 - - group Group_12_3 { - - - /** - * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for terminating call in pre-alerting phase using PS to CS SRVCC procedure. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PCT_INV_06(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, // TODO g3gppps2csSrvccTermPreAlerting - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine183)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PCT_INV_06 - - /** - * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for originating call in pre-alerting phase using PS to CS SRVCC procedure. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PCT_INV_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, // TODO g3gppPs2csSrvccOrigPreAlerting - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine183)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PCT_INV_02 - - /** - * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PCT_INV_03(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_18x_Base( - c_statusLine183, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: response 200 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PCT_INV_03 - - /** - * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_MED_OPT_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendOPTIONS( - m_OPTIONS_Request_Base( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 response was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_MED_OPT_01 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of session with active speech media component. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_07(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_07 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of session with inactive speech media component. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_08(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO request active speech media component using CS bearer - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_08 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of originating session in alerting phase. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_09(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_2xx_Base( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine180)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_09 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of terminating session in alerting phase. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_10(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_2xx_Base( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine183)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_10 - - } // 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 - - /** - * @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 of group helpers - +/* + * @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; + + // 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); + f_SendREGISTER( + 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 + )); + 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_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; + + // 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); + f_SendREGISTER( + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + omit, + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "0" // Expired + )); + 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_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; + + // 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); + f_SendREGISTER( + 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_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), + 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_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; + + // 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); + f_SendREGISTER( + 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_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri + { + m_fcValue( + "g-3gpp-atcf-mgmt-uri-in-path", + { + {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} + }) + }), + 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) + ) + )) { + 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; + + // 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 of function f_TC_ISC_SCCAS_RSC_REG_04_atcf + + } // End of group TP_6_3_3_SRVCC_Information_To_ATCF + + group TP_6_3_4_Trigger_SRVCC_To_MSC { + + /** + * @desc Verify that the SCCAS successfully get CS to PS SRVCC information + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_RSC_REG_05_ueims(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + var Contact v_contact; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + action("Please register UE"); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_setHeaders_REGISTER(v_cSeq_s); + v_contact := valueof(vc_contact); + v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation + { + "g.3gpp.atcf-mgmt-uri", + {tokenOrHost := PX_ACTF_MGMT_URI} + }, + { + "g.3gpp.path", + {tokenOrHost := PX_ACTF_URI} + } + }; + f_SendREGISTER( + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + v_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -/*m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri + { + m_fcValue( + "g-3gpp-atcf-mgmt-uri\", + { + {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} + }) + })*/, // TODO To be refined during validation + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_RSC_REG_05_ueims + + function f_TC_ISC_SCCAS_RSC_REG_05_msc(in CSeq p_cSeq_s) + runs on ImsComponent { + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // deregistration + + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // end function f_TC_ISC_SCCAS_RSC_REG_05_msc + + } // End of group TP_6_3_4_Trigger_SRVCC_To_MSC + + group TP_6_3_5_Providing_SRVCC_To_MSC { + + /** + * @desc Verify that the SCCAS successfully provide CS to PS SRVCC information + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_RSC_REG_06_ueims(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + var Contact v_contact; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + action("Please register UE"); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_setHeaders_REGISTER(v_cSeq_s); + v_contact := valueof(vc_contact); + v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation + { + "g.3gpp.icsi-ref", + {tokenOrHost := PX_ICSI_URI} + } + }; + f_SendREGISTER( + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + v_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -/*m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri + { + m_fcValue( + "g-3gpp-atcf-mgmt-uri-in-path", + { + {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} + }) + })*/, // TODO To be refined during validation + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_sccas_Response_2xxonREGISTER( + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation + mw_PAssertedID( + mw_PAssertedIDValue(PX_SCCAS_URI) + ), // TODO To be refined during validation + mw_acceptContact( + { // TODO To be refined during validation + { + "g.3gpp.path-media", + {tokenOrHost := PX_ICSI_URI} + } + } + ) + )) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_RSC_REG_06_ueims + + function f_TC_ISC_SCCAS_RSC_REG_06_msc(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Message + LibIms_Steps.f_setHeadersMESSAGE(v_cSeq_s, vc_from.addressField.addrSpecUnion, vc_to.addressField.addrSpecUnion); + f_awaitingMESSAGE( + mw_sccas_MESSAGE_Request( + -, -, + mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation + -, + m_contentType("application/vnd.3gpp.SRVCC-info+xml"), // TODO To be refined during validation + ? // TODO To be refined during validation + ) + ); + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // Answer to the MESSAGE + f_send200OK(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + } // end function f_TC_ISC_SCCAS_RSC_REG_06_msc + + } // End of group TP_6_3_5_Providing_SRVCC_To_MSC + + } // End of group Group_6_3 + + group Group_6A_4 { + + group TP_6A_4_2_SIP_INVITE_request { + + /** + * @desc Verify that the SCCAS send INVITE for anchored user populated with FeatureCaps header + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_GEN_INV_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_sccas_Response_2xxonINVITE(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_GEN_INV_01 + + } // End of group TP_6A_4_2_SIP_INVITE_request + + } // End of group Group_6A_4 + + group Group_7_3 { + } // End of group Group_7_3 + + group Group_8_3 { + } // End of group Group_8_3 + + group Group_9_3 { + + function f_TC_IISC_SCCAS_CPT_INV_01_ueims(in CSeq p_cSeq_s) + runs on ImsComponent { + + // TODO: set correct service profiles + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + omit, // template(omit) Require p_require := omit, + vc_route, + m_supported_replaces, //template(omit) Supported p_supported := omit, + omit //template(value) MessageBody p_mb + ) + + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s)); + + + } + + } // End of group Group_9_3 + + group Group_10_3 { + } // End of group Group_10_3 + + group Group_11_3 { + + /** + * @desc Verify that the SCC AS successfully processes an INVITE that includes an active speech media component using CS bearer. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,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 + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CON_RIN_01 + + /** + * @desc Verify that the SCC AS successfully processes an INVITE due to two STIs on the Target Access Leg. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request CS -> PS + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,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 + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CON_RIN_02 + + /** + * @desc Verify that the SCC AS rejects an INVITE due missing ability to associate it to an ongoing or different SIP dialog. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine480)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CON_RIN_03 + + + } // End of group Group_11_3 + + group Group_12_3 { + + + /** + * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for terminating call in pre-alerting phase using PS to CS SRVCC procedure. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PCT_INV_06(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, // TODO g3gppps2csSrvccTermPreAlerting + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PCT_INV_06 + + /** + * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for originating call in pre-alerting phase using PS to CS SRVCC procedure. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PCT_INV_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, // TODO g3gppPs2csSrvccOrigPreAlerting + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PCT_INV_02 + + /** + * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PCT_INV_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_18x_Base( + c_statusLine183, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: response 200 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PCT_INV_03 + + /** + * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_MED_OPT_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendOPTIONS( + m_OPTIONS_Request_Base( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 response was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_MED_OPT_01 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of session with active speech media component. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_07(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_07 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of session with inactive speech media component. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_08(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_08 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of originating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_09(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine180)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_09 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of terminating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_10(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_10 + + } // 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 + + /** + * @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 of group helpers + } // End of module AtsSccas_TCFunctions \ No newline at end of file diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 747a4cc..cf73113 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -1,281 +1,360 @@ -/* - * @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; - - 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 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 { - } - - group HeaderTemplatesSteffen { - } - - group HeaderTemplatesBostjan { - } - - group HeaderTemplatesIztok { - } - - group HeaderTemplatesYann { - } - - } // 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 { - } - - group request_sent_Steffen { - } - - group request_sent_Bostjan { - } - - group request_sent_Iztok { - } - - group request_sent_Yann { - } - - 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 - ) modifies m_INVITE_Request_UE := { - msgHeader := { - 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 { - } - - group request_receive_Steffen { - } - - group request_receive_Bostjan { - } - - group request_receive_Iztok { - } - - group request_receive_Yann { - } - - 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 - +/* + * @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; + + 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 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 { + } + + group HeaderTemplatesSteffen { + } + + group HeaderTemplatesBostjan { + } + + group HeaderTemplatesIztok { + } + + group HeaderTemplatesYann { + } + + } // 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 { + } + + group request_sent_Steffen { + + template Supported m_supported_replaces := + { + fieldName := REPLACES_E, + optionsTags := omit + } + +// template(value) Response m_Response_Dummy := { +// statusLine := c_statusLine100, +// msgHeader := m_msgHeader_dummy, +// messageBody := omit, +// payload := omit +// } + + // TODO:change name + template (omit) INVITE_Request m_sccas_invite_stl( + 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 := omit, + payload := omit + } + + + } + + group request_sent_Bostjan { + } + + group request_sent_Iztok { + } + + group request_sent_Yann { + } + + 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 + ) modifies m_INVITE_Request_UE := { + msgHeader := { + 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 { + } + + group request_receive_Steffen { + + 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 { + } + + group request_receive_Yann { + } + + 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_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 6938292..94cfcff 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -1,599 +1,632 @@ -/* - * @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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 - - } // End of group Group_6A_4 - - group Group_7_3 { - } // End of group Group_7_3 - - group Group_8_3 { - } // End of group Group_8_3 - - group Group_9_3 { - } // End of group Group_9_3 - - group Group_10_3 { - } // 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 - - } // End of group Group_12_3 - -} // End of module AtsSccas_Testcases +/* + * @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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + + } // End of group Group_6A_4 + + group Group_7_3 { + } // End of group Group_7_3 + + group Group_8_3 { + } // 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 TP_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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + stop; + } + + // TODO: setUo "the UE entity isRegisteredTo the IMS" + + // f_Registration_IMS + + f_cf_1IscUp(v_imsComponent_ueims); + + + + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_IISC_SCCAS_CPT_INV_01_ueims(p_cSeq_s)); + + + + f_cf_1IscDown(v_imsComponent_ueims); + + } // End of TP_ISC_SCCAS_CPT_INV_01 + + } // End of group Group_9_3 + + group Group_10_3 { + } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + + } // End of group Group_12_3 + +} // End of module AtsSccas_Testcases -- GitLab From 64b55852f36a43e0a300e7a1ab6595fa5bb667fc Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 19 Oct 2022 09:15:38 +0200 Subject: [PATCH 121/202] update templates, test --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 142 +++++++++++++++--------- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 141 +++++++++++++++++++++++ 2 files changed, 232 insertions(+), 51 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 74e2be9..cfbe53a 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -147,61 +147,101 @@ module AtsSccas_TCFunctions { } // 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; - /** - * @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; - - // 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 + // Preamble + f_init_userprofile(c_userProfile_PCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + f_initSipUrl(c_userProfile_PCSCFwithHomeUE); + + //Registration + f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER + m_register3ptyUe := m_register_ue_srvcc( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + m_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), + omit,//m_contentType(c_sdpApplication), // TODO To be refined during validation + omit//m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ); + 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, + -, + // PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + // PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , + m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } - // Registration - f_setHeaders_REGISTER(v_cSeq_s); - f_SendREGISTER( - 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_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), - 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 - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + } // End of function f_TC_ISC_SCCAS_RSC_REG_03 - } // End of function f_TC_ISC_SCCAS_RSC_REG_03 } // End of group TP_6_3_2_Triggers_To_ATCF diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index cf73113..0a3a751 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -189,6 +189,131 @@ module AtsSccas_Templates } 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) charstring p_host, + //template(value) integer p_port, + 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, + //path := m_path_TS(p_host, p_port), + pChargingVector := m_pChargingVector_icid_TS, + pVisitedNetworkID := m_pVisitedNetworkID_TS, + //require := { + // fieldName := REQUIRE_E, + // optionsTags := {"path"} + //}, + toField := p_to, + via := p_via, + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := p_contentType + }, + messageBody := p_mb + } } group request_sent_Yann { @@ -328,6 +453,22 @@ module AtsSccas_Templates } 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 + }} } group request_receive_Yann { -- GitLab From cb6a49365479cd48e05481407a5b351078862533 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 10:00:56 +0200 Subject: [PATCH 122/202] template for f_TC_ISC_SCCAS_CPT_INV_11 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 69 +++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index cfbe53a..5dc8338 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1433,6 +1433,75 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_10 + + /** + * @desc Verify that the SCC AS handles correctly additional session transfer initiation. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_11(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_11 + } // End of group Group_12_3 -- GitLab From 829e2ae7a5c83c208c852047c99ea74cef66fbec Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 10:01:06 +0200 Subject: [PATCH 123/202] template for TC_ISC_SCCAS_CPT_INV_11 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 32 ++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 94cfcff..abdc780 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -353,7 +353,7 @@ module AtsSccas_Testcases 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)); + 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}); @@ -626,6 +626,36 @@ module AtsSccas_Testcases 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + } // End of group Group_12_3 -- GitLab From 82f0405a2fa94f24aeb72d3175f7a595954aaaac Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 10:12:48 +0200 Subject: [PATCH 124/202] template for f_TC_ISC_SCCAS_CPT_INV_12,13,14 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 201 ++++++++++++++++++++++++ 1 file changed, 201 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 5dc8338..d3a6851 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1502,6 +1502,207 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_CPT_INV_11 + /** + * @desc Verify that the SCC AS handles correctly transfer of session with inactive speech media component. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_12(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_12 + + /** + * @desc Verify that the SCC AS handles correctly transfer of originating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_13(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine180)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_13 + + /** + * @desc Verify that the SCC AS handles correctly transfer of terminating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_14(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_14 } // End of group Group_12_3 -- GitLab From 77f6c16be5880378836bb98feafbf2725bf8ed30 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 10:13:07 +0200 Subject: [PATCH 125/202] template for TC_ISC_SCCAS_CPT_INV_12,13,14 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 86 +++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index abdc780..be73142 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -656,6 +656,92 @@ module AtsSccas_Testcases } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 } // End of group Group_12_3 -- GitLab From 7520efd0da9cd51630850812dc5dd47c00da56eb Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 10:23:20 +0200 Subject: [PATCH 126/202] template for TC_ISC_SCCAS_TER_BYE_01 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index be73142..63784a7 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -742,6 +742,35 @@ module AtsSccas_Testcases 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 -- GitLab From 7cfe0dcfc35e38ca0c4667240a4fc47f28f4a51f Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 10:23:42 +0200 Subject: [PATCH 127/202] template for f_TC_ISC_SCCAS_TET_BYE_01 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 68 +++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index d3a6851..adabb92 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1703,6 +1703,74 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_14 + + /** + * @desc Verify that the SCC AS correctly behave procedures when the access transfer is completed. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_TER_BYE_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_TER_BYE_01 } // End of group Group_12_3 -- GitLab From a509d217d9ab3953db652cc8a67ec01775277eb3 Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 19 Oct 2022 10:25:03 +0200 Subject: [PATCH 128/202] update templates, replaced tabs --- ttcn/AtsSccas/AtsSccas_Steps.ttcn | 138 +- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 1769 ++++++++++++----------- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 429 +++--- 3 files changed, 1218 insertions(+), 1118 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn index c7aae9a..050d340 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -1,5 +1,7 @@ module AtsSccas_Steps { + // LibSip + import from LibSip_Common all; import from LibSip_SIPTypesAndValues all; import from LibSip_SDPTypes all; import from LibSip_Steps all; @@ -30,45 +32,45 @@ module AtsSccas_Steps { 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_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_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_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 + const integer c_conferenceProfile_factoryURI := 800; // conference factory URI // number of service profile const integer c_serviceProfile_EMERGENCY := 112; @@ -78,7 +80,7 @@ module AtsSccas_Steps { // 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 + const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_ip := 1102; // c_interfaceProfile_IMS_SUT_PCSCF1 } // End of group UserProfileConstants @@ -347,5 +349,87 @@ module AtsSccas_Steps { } // 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 + } // End of group SetHeaders } // End of module AtsSccas_Steps diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index cfbe53a..8d01c73 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -147,100 +147,121 @@ module AtsSccas_TCFunctions { } // End of group TP_6_3_1_General group TP_6_3_2_Triggers_To_ATCF { - - /** - * @desc Verify that the SCCAS successfully obtain/processes SRVCC information - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_RSC_REG_03(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - var template(value) REGISTER_Request m_register3ptyUe; - var template(value) RequestUnion m_req; - var template(value) Response m_ResponseReg_3ptyUe; - - // Preamble - f_init_userprofile(c_userProfile_PCSCFwithHomeUE); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - f_initSipUrl(c_userProfile_PCSCFwithHomeUE); - - //Registration - f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER - m_register3ptyUe := m_register_ue_srvcc( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - m_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), - omit,//m_contentType(c_sdpApplication), // TODO To be refined during validation - omit//m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ); - 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 - ); - + + /** + * @desc Verify that the SCCAS successfully obtain/processes SRVCC information + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_RSC_REG_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + var template(value) REGISTER_Request m_register3ptyUe; + var template(value) RequestUnion m_req; + var template(value) Response m_ResponseReg_3ptyUe; + + // Preamble + f_init_userprofile(c_userProfile_PCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + f_initSipUrl(c_userProfile_PCSCFwithHomeUE); + //Registration + f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER + m_register3ptyUe := m_register_ue_srvcc( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + m_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), + omit, + omit + ); + m_req:= {Register:=valueof(m_register3ptyUe)}; - 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, - -, - // PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - // PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , - m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_RSC_REG_03 + m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_SipUrl_currDomain(vc_userprofile), + vc_from.addressField.nameAddr.addrSpec + ); + + f_init_userprofile(c_userProfile_SCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS + f_initSipUrl(c_userProfile_SCSCFwithHomeUE); + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone + + f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER + f_SendREGISTER( + m_REGISTER_Request_AS( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + -, + "600000", + m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , + m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + //Deregistration + f_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 @@ -651,32 +672,32 @@ module AtsSccas_TCFunctions { } // End of group Group_8_3 group Group_9_3 { - - function f_TC_IISC_SCCAS_CPT_INV_01_ueims(in CSeq p_cSeq_s) - runs on ImsComponent { - - // TODO: set correct service profiles - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE(m_sccas_invite( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - omit, // template(omit) Require p_require := omit, - vc_route, - m_supported_replaces, //template(omit) Supported p_supported := omit, - omit //template(value) MessageBody p_mb - ) - - ); - f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s)); - - - } - + + function f_TC_IISC_SCCAS_CPT_INV_01_ueims(in CSeq p_cSeq_s) + runs on ImsComponent { + + // TODO: set correct service profiles + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + omit, // template(omit) Require p_require := omit, + vc_route, + m_supported_replaces, //template(omit) Supported p_supported := omit, + omit //template(value) MessageBody p_mb + ) + + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s)); + + + } + } // End of group Group_9_3 group Group_10_3 { @@ -684,756 +705,756 @@ module AtsSccas_TCFunctions { group Group_11_3 { - /** - * @desc Verify that the SCC AS successfully processes an INVITE that includes an active speech media component using CS bearer. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CON_RIN_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO request active speech media component using CS bearer - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_INVITE_Request(?,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 - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CON_RIN_01 - - /** - * @desc Verify that the SCC AS successfully processes an INVITE due to two STIs on the Target Access Leg. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CON_RIN_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO request CS -> PS - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_INVITE_Request(?,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 - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CON_RIN_02 - - /** - * @desc Verify that the SCC AS rejects an INVITE due missing ability to associate it to an ongoing or different SIP dialog. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CON_RIN_03(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine480)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CON_RIN_03 - - + /** + * @desc Verify that the SCC AS successfully processes an INVITE that includes an active speech media component using CS bearer. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,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 + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CON_RIN_01 + + /** + * @desc Verify that the SCC AS successfully processes an INVITE due to two STIs on the Target Access Leg. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request CS -> PS + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,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 + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CON_RIN_02 + + /** + * @desc Verify that the SCC AS rejects an INVITE due missing ability to associate it to an ongoing or different SIP dialog. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine480)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CON_RIN_03 + + } // End of group Group_11_3 group Group_12_3 { - - - /** - * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for terminating call in pre-alerting phase using PS to CS SRVCC procedure. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PCT_INV_06(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, // TODO g3gppps2csSrvccTermPreAlerting - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine183)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PCT_INV_06 - - /** - * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for originating call in pre-alerting phase using PS to CS SRVCC procedure. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PCT_INV_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, // TODO g3gppPs2csSrvccOrigPreAlerting - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine183)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PCT_INV_02 - - /** - * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PCT_INV_03(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_18x_Base( - c_statusLine183, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: response 200 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PCT_INV_03 - - /** - * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_MED_OPT_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendOPTIONS( - m_OPTIONS_Request_Base( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 response was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_MED_OPT_01 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of session with active speech media component. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_07(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_07 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of session with inactive speech media component. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_08(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO request active speech media component using CS bearer - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_08 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of originating session in alerting phase. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_09(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_2xx_Base( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine180)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_09 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of terminating session in alerting phase. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_10(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_2xx_Base( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine183)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_10 - + + + /** + * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for terminating call in pre-alerting phase using PS to CS SRVCC procedure. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PCT_INV_06(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, // TODO g3gppps2csSrvccTermPreAlerting + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PCT_INV_06 + + /** + * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for originating call in pre-alerting phase using PS to CS SRVCC procedure. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PCT_INV_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, // TODO g3gppPs2csSrvccOrigPreAlerting + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PCT_INV_02 + + /** + * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PCT_INV_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_18x_Base( + c_statusLine183, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: response 200 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PCT_INV_03 + + /** + * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_MED_OPT_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendOPTIONS( + m_OPTIONS_Request_Base( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 response was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_MED_OPT_01 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of session with active speech media component. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_07(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_07 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of session with inactive speech media component. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_08(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_08 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of originating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_09(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine180)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_09 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of terminating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_10(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_10 + } // End of group Group_12_3 group helpers { @@ -1457,15 +1478,15 @@ module AtsSccas_TCFunctions { } // End of function f_sendRegistrationAndAwait200Ok - /** - * @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; - } + /** + * @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 of group helpers diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 0a3a751..c8d53d7 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -141,179 +141,174 @@ module AtsSccas_Templates } group request_sent_Steffen { - - template Supported m_supported_replaces := - { - fieldName := REPLACES_E, - optionsTags := omit - } - -// template(value) Response m_Response_Dummy := { -// statusLine := c_statusLine100, -// msgHeader := m_msgHeader_dummy, -// messageBody := omit, -// payload := omit -// } - - // TODO:change name - template (omit) INVITE_Request m_sccas_invite_stl( - 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 := omit, - payload := omit - } - - + + template Supported m_supported_replaces := + { + fieldName := REPLACES_E, + optionsTags := omit + } + +// template(value) Response m_Response_Dummy := { +// statusLine := c_statusLine100, +// msgHeader := m_msgHeader_dummy, +// messageBody := omit, +// payload := omit +// } + + // TODO:change name + template (omit) INVITE_Request m_sccas_invite_stl( + 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 := omit, + payload := omit + } + + } group request_sent_Bostjan { } 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 + //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 - } + ) 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) charstring p_host, - //template(value) integer p_port, - 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, - //path := m_path_TS(p_host, p_port), - pChargingVector := m_pChargingVector_icid_TS, - pVisitedNetworkID := m_pVisitedNetworkID_TS, - //require := { - // fieldName := REQUIRE_E, - // optionsTags := {"path"} - //}, - toField := p_to, - via := p_via, - contentLength := m_contentLength(f_MessageBodyLength(p_mb)), - contentType := p_contentType - }, - 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 + } } group request_sent_Yann { @@ -410,65 +405,65 @@ module AtsSccas_Templates } group request_receive_Steffen { - - 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 := { + + 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 - } - } - - } + 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) 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 + }} } group request_receive_Yann { -- GitLab From 1d831a12847a2f3be03339a181a2e198e63d6c3e Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 10:28:32 +0200 Subject: [PATCH 129/202] template for f_TC_ISC_SCCAS_TET_BYE_01 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index adabb92..f8b44f5 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1744,16 +1744,13 @@ module AtsSccas_TCFunctions { 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( + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendBYE( + m_BYE_Request_UE( vc_requestUri, vc_callId, p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) + vc_from, vc_to, vc_via_REG )); tc_ack.start; alt { -- GitLab From d15886f3dbe922d08d50afb514940df2847b5ace Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 19 Oct 2022 10:52:05 +0200 Subject: [PATCH 130/202] resolved conflicts --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 335 ++++++++++++++++++++++++ 1 file changed, 335 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 8d01c73..f329b54 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1455,6 +1455,341 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_CPT_INV_10 + /** + * @desc Verify that the SCC AS handles correctly additional session transfer initiation. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_11(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_11 + + /** + * @desc Verify that the SCC AS handles correctly transfer of session with inactive speech media component. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_12(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_12 + + /** + * @desc Verify that the SCC AS handles correctly transfer of originating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_13(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine180)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_13 + + /** + * @desc Verify that the SCC AS handles correctly transfer of terminating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_14(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine183)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_14 + + /** + * @desc Verify that the SCC AS correctly behave procedures when the access transfer is completed. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_TER_BYE_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendBYE( + m_BYE_Request_UE( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + 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 { -- GitLab From db5efb46b5aebd0bc157978e8bdf627b4878fa16 Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 19 Oct 2022 11:32:06 +0200 Subject: [PATCH 131/202] updated tcfunctions REG01-03 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 124 +++++++++++++++--------- 1 file changed, 80 insertions(+), 44 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index d238cfe..be6a340 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -48,39 +48,77 @@ module AtsSccas_TCFunctions { 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; + - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); + // Preamble + f_init_userprofile(c_userProfile_PCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE"); + f_initSipUrl(c_userProfile_PCSCFwithHomeUE); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - // Registration - f_setHeaders_REGISTER(v_cSeq_s); + //Registration + f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER + m_register3ptyUe := m_register_ue_srvcc( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + omit, + omit, + omit + ); + m_req:= {Register:=valueof(m_register3ptyUe)}; + + m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_SipUrl_currDomain(vc_userprofile), + vc_from.addressField.nameAddr.addrSpec + ); + + f_init_userprofile(c_userProfile_SCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS + f_initSipUrl(c_userProfile_SCSCFwithHomeUE); + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone + + f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER f_SendREGISTER( - m_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 - )); + m_REGISTER_Request_AS( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + -, + "600000", + m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , + m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) + )); tc_ack.start; alt { - [] SIPP.receive(mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + [] 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 @@ -90,7 +128,6 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_RSC_REG_01 @@ -104,17 +141,16 @@ module AtsSccas_TCFunctions { // 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); - action("Please register UE"); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + // 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 - // Registration - f_setHeaders_REGISTER(v_cSeq_s); + f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER f_SendREGISTER( - m_sccas_register( + m_REGISTER_Request_AS( vc_requestUri, vc_callId, vc_cSeq, @@ -122,14 +158,14 @@ module AtsSccas_TCFunctions { vc_to, vc_via_REG, vc_contact, - omit, - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "0" // Expired - )); + -, + "0", + - , + -) + ); tc_ack.start; alt { - [] SIPP.receive(mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + [] 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 @@ -138,8 +174,7 @@ module AtsSccas_TCFunctions { 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_02 @@ -234,6 +269,7 @@ module AtsSccas_TCFunctions { } //Deregistration + f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER f_SendREGISTER( m_REGISTER_Request_AS( vc_requestUri, -- GitLab From cdc751958b660657822b504c83fcb7e420f72a8f Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 11:40:41 +0200 Subject: [PATCH 132/202] template for f_TC_ISC_SCCAS_PPT_RIN_01 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 70 +++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index d238cfe..ec54fc2 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -701,6 +701,76 @@ module AtsSccas_TCFunctions { } // End of group Group_9_3 group Group_10_3 { + + /** + * @desc Verify that the SCC AS successfully processes an INVITE on a previously established dialog if the SIP INVITE request contains a Replaces header field. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PPT_RIN_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // 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 + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PPT_RIN_01 + + } // End of group Group_10_3 group Group_11_3 { -- GitLab From eecb16d3dabd96f8223c68a0d858bd247f10a28e Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 11:41:16 +0200 Subject: [PATCH 133/202] template for TC_ISC_SCCAS_PPT_RIN_01 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 63784a7..f49caf1 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -300,6 +300,36 @@ module AtsSccas_Testcases } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + } // End of group Group_10_3 group Group_11_3 { -- GitLab From d5955757be046ecf3218947c3b2bd24032b11e7b Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 19 Oct 2022 11:49:19 +0200 Subject: [PATCH 134/202] updated tcfunctions REG04 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 108 ++++++++++++++++-------- 1 file changed, 72 insertions(+), 36 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index be6a340..9857dc9 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -312,18 +312,66 @@ module AtsSccas_TCFunctions { 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; - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); + // Preamble + f_init_userprofile(c_userProfile_PCSCFwithHomeUE); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE"); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + f_initSipUrl(c_userProfile_PCSCFwithHomeUE); + + //Registration + f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER + m_register3ptyUe := m_register_ue_srvcc( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri + { + m_fcValue( + "g-3gpp-atcf-mgmt-uri-in-path", + { + {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} + }) + }), + omit, + omit + ); + m_req:= {Register:=valueof(m_register3ptyUe)}; + + m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_SipUrl_currDomain(vc_userprofile), + vc_from.addressField.nameAddr.addrSpec + ); + + f_init_userprofile(c_userProfile_SCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS + f_initSipUrl(c_userProfile_SCSCFwithHomeUE); + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone - // Registration - f_setHeaders_REGISTER(v_cSeq_s); + f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER f_SendREGISTER( - m_sccas_register( + m_REGISTER_Request_AS( vc_requestUri, vc_callId, vc_cSeq, @@ -331,38 +379,26 @@ module AtsSccas_TCFunctions { vc_to, vc_via_REG, vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + -, "600000", - m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri - { - m_fcValue( - "g-3gpp-atcf-mgmt-uri-in-path", - { - {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} - }) - }), - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , + m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) )); tc_ack.start; alt { - [] SIPP.receive(mw_sccas_Response_2xxonREGISTER( - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation - mw_PAssertedID( - mw_PAssertedIDValue(PX_SCCAS_URI) - ) - )) { +// [] SIPP.receive(mw_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 -- GitLab From 148363318c0c83e398812048a6e66d45f32f7e64 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 11:58:26 +0200 Subject: [PATCH 135/202] template for TC_ISC_SCCAS_PPT_RIN_02 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index f49caf1..5a2eeeb 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -330,6 +330,35 @@ module AtsSccas_Testcases } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + } // End of group Group_10_3 group Group_11_3 { -- GitLab From b98e2c7ac8eb255f0adabbb344e299875e9056d5 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 11:58:36 +0200 Subject: [PATCH 136/202] template for f_TC_ISC_SCCAS_PPT_RIN_02 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 67 +++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 0f9a15f..42f58ff 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -842,6 +842,73 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_PPT_RIN_01 + /** + * @desc Verify that the SCC AS successfully processes an UPDATE on an existing early dialog if the SIP INVITE request contains a Replaces header field. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PPT_RIN_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_UPDATE_Request_Base(?)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: UPDATE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PPT_RIN_02 } // End of group Group_10_3 -- GitLab From d6d565490e1ea3cf34a5d95c7f84055040012638 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 12:18:23 +0200 Subject: [PATCH 137/202] template for f_TC_ISC_SCCAS_PPT_RIN_03 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 68 +++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 42f58ff..ed600dd 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -910,6 +910,74 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_PPT_RIN_02 + /** + * @desc Verify that the SCC AS processes an INVITE if it is unable to associate the SIP INVITE request with a confirmed dialog or on a previously established dialog. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PPT_RIN_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine480)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PPT_RIN_03 + } // End of group Group_10_3 group Group_11_3 { -- GitLab From bbb6b2647193bed75713e668d3943e447f6b2859 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 12:18:33 +0200 Subject: [PATCH 138/202] template for TC_ISC_SCCAS_PPT_RIN_03 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 31 ++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 5a2eeeb..16f6cd5 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -359,7 +359,36 @@ module AtsSccas_Testcases } // End of TC_ISC_SCCAS_PPT_RIN_02 - } // End of group Group_10_3 + /* + * @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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + + } // End of group Group_10_3 group Group_11_3 { -- GitLab From 6dfbd2f050b1db00016fefd3cd8f1b27237fe409 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 12:23:47 +0200 Subject: [PATCH 139/202] template for TC_ISC_SCCAS_PPT_RIN_04 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 16f6cd5..5b9a997 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -388,6 +388,35 @@ module AtsSccas_Testcases } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + } // End of group Group_10_3 group Group_11_3 { -- GitLab From 0cb7a91324868c4ea0dc12a5ea677b8a6b7ce672 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 12:23:55 +0200 Subject: [PATCH 140/202] template for f_TC_ISC_SCCAS_PPT_RIN_04 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 70 ++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index ed600dd..9ec2a66 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -952,7 +952,7 @@ module AtsSccas_TCFunctions { // 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( + m_sccas_invite( // TODO Replaces indicating value PX_UE_A_SIP_URI; // indicating access transfer procedure vc_requestUri, vc_callId, p_cSeq_s, @@ -978,6 +978,74 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_PPT_RIN_03 + /** + * @desc Verify that the SCC AS processes an INVITE if number of media lines in the Target Access Leg is less than the number of media lines in the Source Access Leg. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PPT_RIN_04(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO TargetDialog indicating value PX_UE_MediaLines; // indicating number of media lines in the Target Access Leg is less than the number of media lines in the Source Access Leg + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine480)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PPT_RIN_04 + } // End of group Group_10_3 group Group_11_3 { -- GitLab From 797ff569f55b0ba0bb35f3ebca406eff7e53c7e6 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 14:19:20 +0200 Subject: [PATCH 141/202] template for f_TC_ISC_SCCAS_PPT_BYE_01 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 78 +++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 9ec2a66..bea2070 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1046,6 +1046,84 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_PPT_RIN_04 + /** + * @desc Verify that the SCC AS successfully processes an BYE on a previously established dialog, if does not receive within this time interval an initial SIP INVITE request. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PPT_BYE_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendBYE( + m_BYE_Request_UE( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG + )); + tc_T1.start(8.0); tc_T1.timeout; // wait 8s + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + tc_ack.start; + alt { + [] SIPP.receive(mw_BYE_Request_Base(?)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: BYE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PPT_BYE_01 + } // End of group Group_10_3 group Group_11_3 { -- GitLab From db1f38674d4af26a0c52a77a0ff5637048b60d7a Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 14:19:34 +0200 Subject: [PATCH 142/202] template for TC_ISC_SCCAS_PPT_BYE_01 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 5b9a997..d3e9d37 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -417,6 +417,35 @@ module AtsSccas_Testcases } // End of TC_ISC_SCCAS_PPT_RIN_04 + /* + * @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_BYE_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + //Variables + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + } // End of group Group_10_3 group Group_11_3 { -- GitLab From a4543e1a760a1e15609efb04f92ea0af1a0f26ca Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 14:24:41 +0200 Subject: [PATCH 143/202] template for TC_ISC_SCCAS_PPT_BYE_02 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 31 ++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index d3e9d37..8b507d8 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -418,7 +418,7 @@ module AtsSccas_Testcases } // End of TC_ISC_SCCAS_PPT_RIN_04 /* - * @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. + * @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) @@ -446,6 +446,35 @@ module AtsSccas_Testcases } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + } // End of group Group_10_3 group Group_11_3 { -- GitLab From 36c254ebd0f217ce26818e7b6ca03853180ce4c6 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 14:24:50 +0200 Subject: [PATCH 144/202] template for f_TC_ISC_SCCAS_PPT_BYE_02 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 78 +++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index bea2070..5fb18e7 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1124,6 +1124,84 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_PPT_BYE_01 + /** + * @desc Verify that the SCC AS successfully processes an CANCEL on a early dialog. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PPT_BYE_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendBYE( + m_BYE_Request_UE( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG + )); + tc_T1.start(8.0); tc_T1.timeout; // wait 8s + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + tc_ack.start; + alt { + [] SIPP.receive(mw_CANCEL_Request_Base(?)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: CANCEL message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PPT_BYE_02 + } // End of group Group_10_3 group Group_11_3 { -- GitLab From b33f8952602587e41f340db0d4f5608a5317a267 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 14:37:00 +0200 Subject: [PATCH 145/202] template for f_TC_ISC_SCCAS_PPT_CAN_01 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 67 +++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 5fb18e7..d73549b 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1202,6 +1202,73 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_PPT_BYE_02 + /** + * @desc Verify that the SCC AS successfully processes an CANCEL on a early dialog. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PPT_CAN_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersCANCEL(v_cSeq_s); + f_SendCANCEL( + m_CANCEL_Request_Reason_IMS( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG,vc_route, + 503 + )); + tc_T1.start(8.0); tc_T1.timeout; // wait 8s + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PPT_CAN_01 + } // End of group Group_10_3 group Group_11_3 { -- GitLab From 0f9ef7f93404ce6ec44dbb15b8ad67ec49e9b24b Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 14:37:19 +0200 Subject: [PATCH 146/202] template for TC_ISC_SCCAS_PPT_CAN_01 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 8b507d8..c9a32c8 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -475,6 +475,35 @@ module AtsSccas_Testcases } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 + } // End of group Group_10_3 group Group_11_3 { -- GitLab From 152b934eea0c2522b28f41a0dd50fd97af0a77c3 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 14:46:53 +0200 Subject: [PATCH 147/202] template for TC_ISC_SCCAS_PPT_RES_01 --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index c9a32c8..67cba0a 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -504,6 +504,35 @@ module AtsSccas_Testcases } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 { -- GitLab From a2526c73fe266fe355f7cd870f123c1cecb8568f Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Wed, 19 Oct 2022 14:47:05 +0200 Subject: [PATCH 148/202] template for f_TC_ISC_SCCAS_PPT_RES_01 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 68 +++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index d73549b..f3edc75 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1269,6 +1269,74 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_PPT_CAN_01 + /** + * @desc Verify that the SCC AS successfully processes an SIP 503 (Service Unavailable) response on a early dialog. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PPT_RES_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine503, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + tc_T1.start(8.0); tc_T1.timeout; // wait 8s + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine503)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: Respoonse 503 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + 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 { -- GitLab From acf21ed9e6a8defe5f3907801892689caa35b4e0 Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 19 Oct 2022 14:58:12 +0200 Subject: [PATCH 149/202] added tc function TP_ISC_SCCAS_ORI_INV_01 --- ttcn/AtsSccas/AtsSccas_Steps.ttcn | 24 +++++ ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 115 +++++++++++++++++++++++- 2 files changed, 137 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn index 050d340..0e780db 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -430,6 +430,30 @@ module AtsSccas_Steps { vc_via_REG := vc_via; } // end function setHeaders_REGISTER_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 + } // End of group SetHeaders } // End of module AtsSccas_Steps diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 0f9a15f..970a5af 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -35,7 +35,7 @@ module AtsSccas_TCFunctions { 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 { @@ -418,10 +418,12 @@ module AtsSccas_TCFunctions { // Local variables var CSeq v_cSeq_s := p_cSeq_s; - // Preambule + // 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 @@ -738,6 +740,115 @@ module AtsSccas_TCFunctions { } // End of group Group_6A_4 group Group_7_3 { + group TP_Distinction_of_requests_sent_to_the_SCCAS { + + /** + * @desc Verify that the SCCAS first receives SIP INVITE request from UE/SCSC + * @param p_cSeq_s Random CSeq INVITE number + */ + function TP_ISC_SCCAS_ORI_INV_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); + + //Registration + f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER + m_register3ptyUe := m_register_ue_srvcc( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + omit, + omit, + omit + ); + m_req:= {Register:=valueof(m_register3ptyUe)}; + + m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_SipUrl_currDomain(vc_userprofile), + vc_from.addressField.nameAddr.addrSpec + ); + + f_init_userprofile(c_userProfile_SCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS + f_initSipUrl(c_userProfile_SCSCFwithHomeUE); + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone + + f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_REGISTER_Request_AS( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + -, + "600000", + m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , + m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) + ), + mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + f_IncCSeq(v_cSeq_s); + /*LibIms_Steps.*/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_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 + } + } + + + } //End of function TP_ISC_SCCAS_ORI_INV_01 + + } //End of group TP_Distinction_of_requests_sent_to_the_SCCAS } // End of group Group_7_3 group Group_8_3 { -- GitLab From 15420c66a0f7fdb7e61e16f3adbbf1359d1dbc32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 19 Oct 2022 15:07:41 +0200 Subject: [PATCH 150/202] Net TPs 9.3 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 196 +++++++++++++++++++ ttcn/AtsSccas/AtsSccas_Templates.ttcn | 103 ++++++++++ ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 249 ++++++++++++++++++++++++ 3 files changed, 548 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index f3edc75..3409dff 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -769,6 +769,202 @@ module AtsSccas_TCFunctions { } + + function f_TC_ISC_SCCAS_CPT_INV_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + omit, // template(omit) Require p_require := omit, + vc_route, + m_supported_replaces, + m_messageBody_SDP_mediaOnly + + ) + + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s)); + + + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of f_TC_IISC_SCCAS_CPT_INV_02 + + function f_TC_ISC_SCCAS_CPT_RIN_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + } // End of f_TC_IISC_SCCAS_CPT_RIN_01 + + function f_TC_ISC_SCCAS_CPT_ACK_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + } // End of f_TC_IISC_SCCAS_CPT_ACK_01 + + function f_TC_ISC_SCCAS_CPT_INV_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy + + // STEP: send invite + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + m_contact_g3gppSrvccAlertingFeature, // TODO: correct use auf g3gppSrvccAlertingFeatureCapabilityIndicator + omit, // template(omit) Require p_require := omit, + vc_route, + m_supported_replaces, + omit + + ) + + ); + f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppMidcallFeature)); + + } // End of f_TC_ISC_SCCAS_CPT_INV_03 } // End of group Group_9_3 diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index c8d53d7..aa239c6 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -141,6 +141,70 @@ module AtsSccas_Templates } group request_sent_Steffen { + + template LibSip_SIPTypesAndValues.Contact m_contact_g3gppSrvccAlertingFeature := { + fieldName := CONTACT_E, + contactBody := { + wildcard := + "g3gppSrvccAlertingFeatureCapabilityIndicator" + } + } + + 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 := { @@ -406,6 +470,45 @@ module AtsSccas_Templates group request_receive_Steffen { + template LibSip_SIPTypesAndValues.Contact mw_contact_g3gppMidcallFeature := { + fieldName := ?, contactBody := ? // TODO: correct use of g3gppMidcallFeatureCapabilityIndicator + } + + 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 := ?, diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 67cba0a..9253271 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -296,6 +296,255 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); } // End of TP_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 TP_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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + stop; + } + + // TODO: setUo "the UE entity isRegisteredTo the IMS" + + // 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 TP_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 TP_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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + stop; + } + + // TODO: setUo "the UE entity isRegisteredTo the IMS" + + // 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 TP_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 TP_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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + stop; + } + + // TODO: setUo "the UE entity isRegisteredTo the IMS" + + // 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 TP_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 TP_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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 TP_ISC_SCCAS_CPT_INV_03 + + + testcase TP_ISC_SCCAS_CPT_INV_04(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_CPT_INV_04 + + + testcase TP_ISC_SCCAS_PCT_UPD_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_PCT_UPD_01 + + testcase TP_ISC_PCT_RES_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_PCT_RES_02 + + testcase TP_ISC_SCCAS_PCT_INV_05(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_PCT_INV_05 + + testcase TP_ISC_SCCAS_PCT_REF_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_PCT_REF_01 + + testcase TP_ISC_SCCAS_PCT_REF_02(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_PCT_REF_02 + + testcase TP_ISC_SCCAS_PCT_RES_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_PCT_RES_01 + + + testcase TP_ISC_SCCAS_MED_BYE_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_MED_BYE_01 + + testcase TP_ISC_SCCAS_MED_RES_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_MED_RES_01 + + testcase TP_ISC_SCCAS_MED_RIN_01(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_MED_RIN_01 + + testcase TP_ISC_SCCAS_CPT_INV_05(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_CPT_INV_05 + + testcase TP_ISC_SCCAS_CPT_INV_06(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_CPT_INV_06 + + + testcase TP_ISC_SCCAS_PCT_INV_04(inout CSeq p_cSeq_s) + runs on ServerSyncComp + system TestAdapter { + + // TODO + + } // End of TP_ISC_SCCAS_PCT_INV_04 } // End of group Group_9_3 -- GitLab From cce4de75cd783c23f19a979df9891a202c24f5c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Wed, 19 Oct 2022 15:32:03 +0200 Subject: [PATCH 151/202] correction in function name --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 2 +- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 4528794..88085d8 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -856,7 +856,7 @@ module AtsSccas_TCFunctions { group Group_9_3 { - function f_TC_IISC_SCCAS_CPT_INV_01_ueims(in CSeq p_cSeq_s) + function f_TC_ISC_SCCAS_CPT_INV_01(in CSeq p_cSeq_s) runs on ImsComponent { // TODO: set correct service profiles diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 9253271..0784759 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -289,7 +289,7 @@ module AtsSccas_Testcases - f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_IISC_SCCAS_CPT_INV_01_ueims(p_cSeq_s)); + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_CPT_INV_01(p_cSeq_s)); -- GitLab From f9638955b1e527932be65251ec5e25cf6c060b7c Mon Sep 17 00:00:00 2001 From: Bostjan Date: Wed, 19 Oct 2022 15:58:13 +0200 Subject: [PATCH 152/202] General Registration deregistration procedures added --- ttcn/AtsSccas/AtsSccas_Steps.ttcn | 126 ++++++++++++++++++++++++ ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 45 +++++++++ 2 files changed, 171 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn index 0e780db..5a67afa 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -1,5 +1,8 @@ module AtsSccas_Steps { + // LibCommon + import from LibCommon_VerdictControl all; + // LibSip import from LibSip_Common all; import from LibSip_SIPTypesAndValues all; @@ -17,6 +20,7 @@ module AtsSccas_Steps { // AtsSccas import from AtsSccas_PIXITS all; + import from AtsSccas_Templates all; group Constants { @@ -455,5 +459,127 @@ module AtsSccas_Steps { } // end f_setHeadersINVITE_AS } // 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + omit, + omit, + omit + ); + m_req:= {Register:=valueof(m_register3ptyUe)}; + + m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_SipUrl_currDomain(vc_userprofile), + vc_from.addressField.nameAddr.addrSpec + ); + + f_init_userprofile(c_userProfile_SCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS + f_initSipUrl(c_userProfile_SCSCFwithHomeUE); + + f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER + f_SendREGISTER( + m_REGISTER_Request_AS( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + -, + "600000", + m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , + m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) + )); + + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + tc_ack.stop; + + } + [] 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 + } //end group CommonProcedures } // End of module AtsSccas_Steps diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 88085d8..f2c8100 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -735,6 +735,51 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_GEN_INV_01 + /** + * @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_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 + } + } + + // 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_2_SIP_INVITE_request } // End of group Group_6A_4 -- GitLab From f846c01960a503353ff0eec665224db7dd3fbdb7 Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 19 Oct 2022 16:28:14 +0200 Subject: [PATCH 153/202] added tc function TP_ISC_SCCAS_ORI_INV_02 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 143 ++++++++++++++++++++++-- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 22 +++- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 65 +++++++++++ 3 files changed, 220 insertions(+), 10 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 45a08aa..b70e512 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -740,13 +740,13 @@ module AtsSccas_TCFunctions { } // End of group Group_6A_4 group Group_7_3 { - group TP_Distinction_of_requests_sent_to_the_SCCAS { + group TP_7_3_1_Distinction_of_requests_sent_to_the_SCCAS { /** - * @desc Verify that the SCCAS first receives SIP INVITE request from UE/SCSC + * @desc Verify that the SCCAS first receives SIP INVITE request from UE/SCSCF * @param p_cSeq_s Random CSeq INVITE number */ - function TP_ISC_SCCAS_ORI_INV_01(in CSeq p_cSeq_s) + 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; @@ -822,7 +822,7 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_IncCSeq(v_cSeq_s); - /*LibIms_Steps.*/f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); + f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); f_SendINVITE( m_sccas_invite( vc_requestUri, @@ -835,20 +835,145 @@ module AtsSccas_TCFunctions { )); tc_ack.start; alt { - [] SIPP.receive(mw_sccas_Response_2xxonINVITE(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { + repeat + } + [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + log("*** " & __SCOPE__ & ": PASS: INVITE 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 TP_ISC_SCCAS_ORI_INV_01 + } //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; + var template(value) REGISTER_Request m_register3ptyUe; + var template(value) RequestUnion m_req; + var template(value) Response m_ResponseReg_3ptyUe; + + // Preamble + f_init_userprofile(c_userProfile_PCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + f_initSipUrl(c_userProfile_PCSCFwithHomeUE); + + //Registration + f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER + m_register3ptyUe := m_register_ue_srvcc( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + 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_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_REGISTER_Request_AS( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + -, + "600000", + m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , + m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) + ), + mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + + 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)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 1xx message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] 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_ORI_INV_02 + + } //End of group TP_7_3_2_Call_origination_procedures_at_the_SCCAS - } //End of group TP_Distinction_of_requests_sent_to_the_SCCAS } // End of group Group_7_3 group Group_8_3 { diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index c8d53d7..28805a7 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -464,8 +464,28 @@ module AtsSccas_Templates 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 request_receive_Yann { } diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 67cba0a..6d1e079 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -258,6 +258,71 @@ module AtsSccas_Testcases } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 { -- GitLab From 457f84c1f68e68379f656cdbb720b95ffbc292f5 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Wed, 19 Oct 2022 19:47:46 +0200 Subject: [PATCH 154/202] Alignment of PIXITS and usage of them in the userProfile --- ttcn/AtsSccas/AtsSccas_PIXITS.ttcn | 336 ++++++----------------------- ttcn/AtsSccas/AtsSccas_Steps.ttcn | 129 ++++++----- 2 files changed, 143 insertions(+), 322 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn index 5a4d5ab..1a8d662 100644 --- a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn @@ -29,16 +29,7 @@ module AtsSccas_PIXITS { group SUT { - group SUT_UE { - /** @desc charstring for SUT - UE IP address to exchange SIP messages - connection point for PCSCF - */ - modulepar charstring PX_IMS_SUT_UE_IPADDR := "10.100.0.6"; - - /** @desc integer for SUT - UE port number to exchange SIP messages - connection point for PCSCF - */ - modulepar integer PX_IMS_SUT_UE_PORT := 5060; - } // End of group SUT_UE1 - + // TODO - SUT_UE1 PIXITS to be removed group SUT_UE1 { /** @desc charstring for SUT - PCSCF1 IP address to exchange SIP messages - connection point for UE1 */ @@ -88,209 +79,7 @@ module AtsSccas_PIXITS { modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "alice-05@plugtest.net"; } // End of group SUT_UE1 - group SUT_UE2 { - /** @desc charstring for SUT - PCSCF2 IP address to exchange SIP messages - connection point for UE2 - */ - modulepar charstring PX_IMS_SUT_PCSCF2_IPADDR := "esrp1.frequentis.plugtests.net"; - - /** @desc integer for SUT - PCSCF2 port number to exchange SIP messages - connection point for UE2 - */ - modulepar integer PX_IMS_SUT_PCSCF2_PORT := 5060; - - /** @desc charstring for SUT/PCSCF2 domain - connection point for UE2 - */ - modulepar charstring PX_IMS_SUT_PCSCF2_HOME_DOMAIN := "plugtests.net"; - - /** @desc charstring for IP address used by the TS to exchange media streams for UE2 - */ - modulepar charstring PX_IMS_SUT_UE2_BEARER_IPADDR := "esrp1.frequentis.plugtests.net"; - - /** @desc charstring for identity of the tester UE2 local domain - */ - modulepar charstring PX_IMS_SUT_UE2_HOME_DOMAIN := "plugtests.net"; - - /** @desc charstring for identity of the tester UE2 local user - */ - modulepar charstring PX_IMS_SUT_UE2_PUBLIC_USER := "2910"; - - /** @desc charstring for RFC 2617 clause 3-2-2 username of UE2: - * The name of user in the specified realm - */ - modulepar charstring PX_IMS_SUT_UE2_PRIVAT_USERNAME := "abcd"; - - /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2 - */ - modulepar charstring PX_IMS_SUT_UE2_PRIVAT_PASSWD := "1234"; - - /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE2: - * 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_SUT_UE2_QOP := "auth"; - - /** @desc charstring for home(SUT) REGISTRAR domain of UE2 - */ - modulepar charstring PX_IMS_SUT_UE2_REGISTRAR := "plugtests.net"; - } // End of group SUT_UE2 - - group SUT_UE3 { - /** @desc charstring for SUT - PCSCF3 IP address to exchange SIP messages - connection point for UE3 - */ - modulepar charstring PX_IMS_SUT_PCSCF3_IPADDR := "172.31.10.2"; - - /** @desc integer for SUT - PCSCF3 port number to exchange SIP messages - connection point for UE3 - */ - modulepar integer PX_IMS_SUT_PCSCF3_PORT := 5060; - - /** @desc charstring for SUT/PCSCF3 domain - connection point for UE3 - */ - modulepar charstring PX_IMS_SUT_PCSCF3_HOME_DOMAIN := "pcscf3.home.net"; - - /** @desc charstring for IP address used by the TS to exchange media streams for UE3 - */ - modulepar charstring PX_IMS_SUT_UE3_BEARER_IPADDR := "172.31.10.2"; - - /** @desc charstring for identity of the tester UE2 local domain - */ - modulepar charstring PX_IMS_SUT_UE3_HOME_DOMAIN := "sut.net"; - - /** @desc charstring for identity of the tester UE3 local user - */ - modulepar charstring PX_IMS_SUT_UE3_PUBLIC_USER := "2910"; - - /** @desc charstring for RFC 2617 clause 3-2-2 username of UE3: - * The name of user in the specified realm - */ - modulepar charstring PX_IMS_SUT_UE3_PRIVAT_USERNAME := "abcd"; - - /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE3 - */ - modulepar charstring PX_IMS_SUT_UE3_PRIVAT_PASSWD := "1234"; - - /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE3: - * 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_SUT_UE3_QOP := "auth"; - - /** @desc charstring for home(SUT) REGISTRAR domain of UE3 - */ - modulepar charstring PX_IMS_SUT_UE3_REGISTRAR := "registrar.sut.net"; - } // End of group SUT_UE3 - - group SUT_UE4 {//UE4 can be used as UE1Visited - /** @desc charstring for SUT - PCSCF4 IP address to exchange SIP messages - connection point for UE4 - */ - modulepar charstring PX_IMS_SUT_PCSCF4_IPADDR := "172.31.10.2"; - - /** @desc integer for SUT - PCSCF4 port number to exchange SIP messages - connection point for UE4 - */ - modulepar integer PX_IMS_SUT_PCSCF4_PORT := 5060; - - /** @desc charstring for SUT/PCSCF4 domain - connection point for UE4 - */ - modulepar charstring PX_IMS_SUT_PCSCF4_HOME_DOMAIN := "pcscf4.home.net"; - - /** @desc charstring for IP address used by the TS to exchange media streams for UE4 - */ - modulepar charstring PX_IMS_SUT_UE4_BEARER_IPADDR := "172.31.10.2"; - - /** @desc charstring for identity of the tester UE2 local domain - */ - modulepar charstring PX_IMS_SUT_UE4_HOME_DOMAIN := "sut.net"; - - /** @desc charstring for identity of the tester UE4 local user - */ - modulepar charstring PX_IMS_SUT_UE4_PUBLIC_USER := "2910"; - - /** @desc charstring for RFC 2617 clause 3-2-2 username of UE4: - * The name of user in the specified realm - */ - modulepar charstring PX_IMS_SUT_UE4_PRIVAT_USERNAME := "abcd"; - - /** @desc charstring for RFC 2617 clause 3-2-2-2 passwd: A known shared secret, the password of user of the specified username of UE2 - */ - modulepar charstring PX_IMS_SUT_UE4_PRIVAT_PASSWD := "1234"; - - /** @desc charstring for RFC 2617 clause 3-2-1 qop options UE4: - * 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_SUT_UE4_QOP := "auth"; - - /** @desc charstring for home(SUT) REGISTRAR domain of UE4 - */ - modulepar charstring PX_IMS_SUT_UE4_REGISTRAR := "registrar.sut.net"; - } // End of group SUT_UE4 - - group SUT_unknown { - /** @desc charstring for identity of unknown UE public user - */ - modulepar charstring PX_IMS_SUT_unknownUE_PUBLIC_USER := "0007"; - } // End of group SUT_unknown - - group EMERGENCY{ - /** @desc charstring for identity of emergency service local domain - */ - modulepar charstring PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "plugtests.net"; - - /** @desc charstring for identity of the emergency service - */ - modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE := "112"; - - /** @desc charstring for identity of the invalid emergency service - */ - modulepar charstring PX_IMS_SUT_EMERGENCY_SERVICE_INVALID := "service.sos.invalid"; - } // End of group EMERGENCY service - - group SUT_IBCF { - /** @desc charstring for SUT/IBCF1 IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_IBCF1_IPADDR := "172.31.10.5"; - - /** @desc integer for SUT/IBCF1 port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_IBCF1_PORT := 5060; - - /** @desc charstring for SUT/IBCF1 domain - */ - modulepar charstring PX_IMS_SUT_IBCF1_HOME_DOMAIN := "ibcf1.sut.net"; - - /** @desc charstring for SUT/IBCF2 IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_IBCF2_IPADDR := "172.31.10.6"; - - /** @desc integer for SUT/IBCF2 port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_IBCF2_PORT := 5060; - - /** @desc charstring for SUT/IBCF2 domain - */ - modulepar charstring PX_IMS_SUT_IBCF2_HOME_DOMAIN := "ibcf2.sut.net"; - } // End of group SUT_IBCF - - group SUT_PCSCF { - /** @desc charstring for SUT/P-CSCF IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_PCSCF_IPADDR := "172.31.10.2"; - - /** @desc integer for SUT/P-CSCF port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_PCSCF_PORT := 5060; - - /** @desc charstring for SUT/P-CSCFdomain - */ - modulepar charstring PX_IMS_SUT_PCSCF_HOME_DOMAIN := "pcscf.sut.net"; - - /** @desc charstring for SUT/P-CSCF P_VisitedNetwork ID header (see RFC3455) - */ - modulepar charstring PX_IMS_SUT_PCSCF_VisitedNetworkID := "sut token"; - - /** @desc charstring for SUT/P-CSCF Min-SE header lower bound for the session refresh interval (see RFC4028) - */ - modulepar charstring PX_IMS_SUT_PCSCF_MinSE := "100"; - } // End of group SUT_PCSCF - + // TODO - SUT_SCSCF PIXITS to be removed when will be replaced in ATS code with TS SCSCF group SUT_SCSCF { /** @desc charstring for SUT/S-CSCF IP address to exchange SIP messages */ @@ -309,20 +98,7 @@ module AtsSccas_PIXITS { modulepar charstring PX_IMS_SUT_SCSCF_REALM := "realm.scscf"; } // End of group SUT_SCSCF - group SUT_ICSCF { - /** @desc charstring for SUT/I-CSCF IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_ICSCF_IPADDR := "172.31.10.3"; - - /** @desc integer for SUT/I-CSCF port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_ICSCF_PORT := 5060; - - /** @desc charstring for SUT/I-CSCFdomain - */ - modulepar charstring PX_IMS_SUT_ICSCF_HOME_DOMAIN := "icscf.sut.net"; - } // End of group SUT_ICSCF - + //used for AS, TAS, SCC-AS group SUT_AS { /** @desc charstring for SUT - AS IP address to exchange SIP messages - connection point for SCSCF */ @@ -334,60 +110,74 @@ module AtsSccas_PIXITS { /** @desc charstring for SUT/AS domain */ - modulepar charstring PX_IMS_SUT_AS_HOME_DOMAIN := "as.sut.net"; + modulepar charstring PX_IMS_SUT_AS_HOME_DOMAIN := "as.domain.net"; } // End of group SUT_AS - group SUT_IMGCF { - /** @desc charstring for SUT/I-MGCF IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_IMGCF_IPADDR := "172.31.10.10"; - - /** @desc integer for SUT/I-MGCF port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_IMGCF_PORT := 5060; - - /** @desc charstring for SUT/I-MGCFdomain - */ - modulepar charstring PX_IMS_SUT_IMGCF_HOME_DOMAIN := "imgcf.sut.net"; - } // End of group SUT_IMGCF - - group SUT_CONF { - /** - * @desc - * charstring for SUT/conference IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_CONF_IPADDR := "172.31.10.10"; - /** - * @desc integer for SUT/conference port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_CONF_PORT := 5060; - /** - * @desc charstring for SUT/conference domain - */ - modulepar charstring PX_IMS_SUT_CONF_HOME_DOMAIN := "conf.sut.net"; - /** - * @desc charstring for conference factory URI name - */ - modulepar charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name"; - } // End of group SUT_CONF - } // End of group SUT - group ts_ue1 { + 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 := "conftest.plugtests.net"; + /** @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 integer for port number used by the UE1 to exchange SIP messages + */ + modulepar integer PX_IMS_TS_UE1_PORT := 5060; - /** @desc charstring for visited(TS) REGISTRAR domain - */ - modulepar charstring PX_IMS_TS_UE1_REGISTRAR := "plugtests.net"; + /** @desc charstring for home(TS) REGISTRAR domain + */ + 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 + } // 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 index 5a67afa..d0de7f5 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -176,6 +176,36 @@ module AtsSccas_Steps { vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; vc_userprofile.registrarDomain := PX_IMS_SUT_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_SUT_UE1_BEARER_IPADDR; + vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; + vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; + vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; + vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; + vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; + vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; + } } // End of 'select' statement } // End of function f_init_userprofile @@ -237,14 +267,14 @@ module AtsSccas_Steps { p_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE1_PUBLIC_USER, password:=omit}; p_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_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_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_SUT_UE1_PUBLIC_USER, password := omit}; p_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE1_HOME_DOMAIN, portField :=omit} @@ -301,49 +331,50 @@ module AtsSccas_Steps { in integer p_interface ) runs on ImsComponent { - vc_sent_label := { host := PX_IMS_SUT_UE_IPADDR, portField := PX_IMS_SUT_UE_PORT }; + vc_sent_label := { host := PX_IMS_SUT_AS_IPADDR, portField := PX_IMS_SUT_AS_PORT }; select(p_interface){ - case (c_interfaceProfile_IMS_SUT_IBCF1) { //variant c_interfaceProfile_IMS_SUT_IBCF1 - vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF1_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF1_IPADDR; - vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF1_HOME_DOMAIN; - } - case (c_interfaceProfile_IMS_SUT_IBCF2) { //variant c_interfaceProfile_IMS_SUT_IBCF2 - vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF2_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF2_IPADDR; - vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF2_HOME_DOMAIN; - } - case (c_interfaceProfile_IMS_SUT_PCSCF1) { //variant c_interfaceProfile_IMS_SUT_PCSCF1 - vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF1_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF1_IPADDR; - vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF1_HOME_DOMAIN; - } - case (c_interfaceProfile_IMS_SUT_PCSCF2) { //variant c_interfaceProfile_IMS_SUT_PCSCF2 - vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF2_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF2_IPADDR; - vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF2_HOME_DOMAIN; - } - case (c_interfaceProfile_IMS_SUT_PCSCF) { //variant c_interfaceProfile_IMS_SUT_PCSCF - vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF_IPADDR; - vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF_HOME_DOMAIN; - } - case (c_interfaceProfile_IMS_SUT_SCSCF) { //variant c_interfaceProfile_IMS_SUT_SCSCF - vc_interfaceprofile.SUTPort := PX_IMS_SUT_SCSCF_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_SCSCF_IPADDR; - vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_SCSCF_HOME_DOMAIN; - } - case (c_interfaceProfile_IMS_SUT_ICSCF) { //variant c_interfaceProfile_IMS_SUT_ICSCF - vc_interfaceprofile.SUTPort := PX_IMS_SUT_ICSCF_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_ICSCF_IPADDR; - vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_ICSCF_HOME_DOMAIN; - } - case (c_interfaceProfile_IMS_SUT_MGCF) { //variant c_interfaceProfile_IMS_SUT_MGCF - vc_interfaceprofile.SUTPort := PX_IMS_SUT_IMGCF_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IMGCF_IPADDR; - vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IMGCF_HOME_DOMAIN; - } +// case (c_interfaceProfile_IMS_SUT_IBCF1) { //variant c_interfaceProfile_IMS_SUT_IBCF1 +// vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF1_PORT; +// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF1_IPADDR; +// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF1_HOME_DOMAIN; +// } +// case (c_interfaceProfile_IMS_SUT_IBCF2) { //variant c_interfaceProfile_IMS_SUT_IBCF2 +// vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF2_PORT; +// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF2_IPADDR; +// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF2_HOME_DOMAIN; +// } +// case (c_interfaceProfile_IMS_SUT_PCSCF1) { //variant c_interfaceProfile_IMS_SUT_PCSCF1 +// vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF1_PORT; +// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF1_IPADDR; +// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF1_HOME_DOMAIN; +// } +// case (c_interfaceProfile_IMS_SUT_PCSCF2) { //variant c_interfaceProfile_IMS_SUT_PCSCF2 +// vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF2_PORT; +// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF2_IPADDR; +// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF2_HOME_DOMAIN; +// } +// case (c_interfaceProfile_IMS_SUT_PCSCF) { //variant c_interfaceProfile_IMS_SUT_PCSCF +// vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF_PORT; +// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF_IPADDR; +// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF_HOME_DOMAIN; +// } +// case (c_interfaceProfile_IMS_SUT_SCSCF) { //variant c_interfaceProfile_IMS_SUT_SCSCF +// vc_interfaceprofile.SUTPort := PX_IMS_SUT_SCSCF_PORT; +// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_SCSCF_IPADDR; +// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_SCSCF_HOME_DOMAIN; +// } +// case (c_interfaceProfile_IMS_SUT_ICSCF) { //variant c_interfaceProfile_IMS_SUT_ICSCF +// vc_interfaceprofile.SUTPort := PX_IMS_SUT_ICSCF_PORT; +// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_ICSCF_IPADDR; +// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_ICSCF_HOME_DOMAIN; +// } +// case (c_interfaceProfile_IMS_SUT_MGCF) { //variant c_interfaceProfile_IMS_SUT_MGCF +// vc_interfaceprofile.SUTPort := PX_IMS_SUT_IMGCF_PORT; +// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IMGCF_IPADDR; +// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IMGCF_HOME_DOMAIN; +// } + //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; -- GitLab From 8e7ee37b564e2aa22194ea235bd9698f3e61d930 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Thu, 20 Oct 2022 10:58:29 +0200 Subject: [PATCH 155/202] refined templates --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 34fcbb9..5df7e9b 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1436,14 +1436,15 @@ module AtsSccas_TCFunctions { // 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 + 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_MBody_SDP(vc_sdp_local), + - // indicating access transfer procedure )); tc_ack.start; alt { -- GitLab From 9d0c30aecac13b095232537443327ffcb666f1df Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Thu, 20 Oct 2022 10:58:43 +0200 Subject: [PATCH 156/202] refined templates --- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 76a95b0..0312a1b 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -140,6 +140,28 @@ module AtsSccas_Templates 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 { -- GitLab From 10f9bd2274489e027858c07e3d23d976a16f2d37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 20 Oct 2022 09:34:26 +0200 Subject: [PATCH 157/202] new TCs, functions and templates for section 9,3 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 149 +++++++++++++++++++++++- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 90 +++++++++++++- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 60 +++++++++- 3 files changed, 289 insertions(+), 10 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 88085d8..5484648 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1057,7 +1057,7 @@ module AtsSccas_TCFunctions { // 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( + f_SendINVITE(m_sccas_invite_contact( vc_requestUri, vc_callId, vc_cSeq, @@ -1067,8 +1067,8 @@ module AtsSccas_TCFunctions { m_contact_g3gppSrvccAlertingFeature, // TODO: correct use auf g3gppSrvccAlertingFeatureCapabilityIndicator omit, // template(omit) Require p_require := omit, vc_route, - m_supported_replaces, - omit + omit, + m_messageBody_SDP_mediaOnly ) @@ -1076,6 +1076,149 @@ module AtsSccas_TCFunctions { f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppMidcallFeature)); } // End of f_TC_ISC_SCCAS_CPT_INV_03 + + function f_TC_ISC_SCCAS_CPT_INV_04(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy + + // STEP: send invite + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite_contact( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + m_contact_g3gppDrvccAlertingFeature, // TODO: correct use auf g3gppDrvccAlertingFeature + omit, // template(omit) Require p_require := omit, + vc_route, + m_supported_replaces, + omit + + ) + + ); + f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppDrvccAlertingFeature)); + + } // End of f_TC_ISC_SCCAS_CPT_INV_04 + + + function f_TC_ISC_SCCAS_CPT_INV_05(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy + + // STEP: send invite + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite_contact( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + m_contact_g3gppDrvccOrigPreAlertingFeature, // TODO: correct use auf g3gppDrvccOrigPreAlertingFeature + omit, // template(omit) Require p_require := omit, + vc_route, + m_supported_replaces, + omit // TODO + + ) + + ); + + tc_ack.start; + alt { + [] SIPP.receive(mw_UPDATE_Request_ContactChange( + vc_callId, + mw_contact_sourceLegAtCreation, + mw_contentType_appclication_sdp, + mw_sdpmessageBody)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: response 200 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + +// f_awaitingResponse(mw_UPDATE_Request_ContactChange( +// vc_callId, +// mw_contact_sourceLegAtCreation, +// mw_contentType_appclication_sdp, +// mw_sdpmessageBody)); + // f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppDrvccAlertingFeature)); + + } // End of f_TC_ISC_SCCAS_CPT_INV_05 } // End of group Group_9_3 diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index aa239c6..22a0f1a 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -16,6 +16,8 @@ module AtsSccas_Templates //LibIms import from LibIms_SIPTypesAndValues all; import from LibIms_Templates all; + + import from LibSip_SDPTypes all; group HeaderTemplates { @@ -142,6 +144,15 @@ module AtsSccas_Templates 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 := { @@ -149,6 +160,15 @@ module AtsSccas_Templates "g3gppSrvccAlertingFeatureCapabilityIndicator" } } + + template LibSip_SIPTypesAndValues.Contact m_contact_g3gppDrvccAlertingFeature := { + fieldName := CONTACT_E, + contactBody := { + wildcard := + "g3gppDrvccAlertingFeature" + } + } + template LibSip_MessageBodyTypes.MessageBody m_messageBody_SDP_mediaOnly := { sdpMessageBody := { @@ -219,8 +239,8 @@ module AtsSccas_Templates // payload := omit // } - // TODO:change name - template (omit) INVITE_Request m_sccas_invite_stl( + + template (omit) INVITE_Request m_sccas_invite_contact( template(value) SipUrl p_requestUri, template(value) CallId p_callId, template(value) CSeq p_cSeq, @@ -242,7 +262,7 @@ module AtsSccas_Templates toField := p_to, via := p_via }, - messageBody := omit, + messageBody := p_mb, payload := omit } @@ -469,11 +489,73 @@ module AtsSccas_Templates } group request_receive_Steffen { + + 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 := { + 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 := ?, diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 0784759..7c02f2e 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -438,12 +438,37 @@ module AtsSccas_Testcases } // End of TP_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 TP_ISC_SCCAS_CPT_INV_04(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { - // TODO + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 TP_ISC_SCCAS_CPT_INV_04 @@ -521,11 +546,40 @@ module AtsSccas_Testcases } // End of TP_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 TP_ISC_SCCAS_CPT_INV_05(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { - // TODO + // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 TP_ISC_SCCAS_CPT_INV_05 -- GitLab From daa88a53684897d62e56db89c52ceedb39b4da66 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Thu, 20 Oct 2022 12:52:17 +0200 Subject: [PATCH 158/202] refined templates --- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 0312a1b..59b3e64 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -508,6 +508,13 @@ module AtsSccas_Templates 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 { -- GitLab From d8068215bb9437cea55a07c2745c57e1f3ca5b18 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Thu, 20 Oct 2022 12:52:25 +0200 Subject: [PATCH 159/202] refined templates --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 5df7e9b..ba37f81 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1438,17 +1438,17 @@ module AtsSccas_TCFunctions { f_SendINVITE( m_sccas_invite_replaces( // TODO request active speech media component using CS bearer vc_requestUri, - vc_callId, + vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, m_MBody_SDP(vc_sdp_local), - - // indicating access transfer procedure + m_Replaces(vc_callId.callid,{quotedString:=""},{quotedString:=""}) // indicating access transfer procedure )); tc_ack.start; alt { - [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { + [] SIPP.receive(mw_INVITE_Request_contact(?)) { tc_ack.stop; log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync -- GitLab From a3fad05415a55b079675c946237cd911ea672bca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 20 Oct 2022 13:00:52 +0200 Subject: [PATCH 160/202] new TCs in section 9,3 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 79 ++++++++++++++++++++++++- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 48 +++++++++++++++ ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 59 +++++++++++++++++- 3 files changed, 183 insertions(+), 3 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 34fcbb9..508baa4 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1373,7 +1373,7 @@ module AtsSccas_TCFunctions { mw_contentType_appclication_sdp, mw_sdpmessageBody)) { tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: response 200 was received ***"); + log("*** " & __SCOPE__ & ": PASS: UPDATE message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { @@ -1389,6 +1389,83 @@ module AtsSccas_TCFunctions { // f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppDrvccAlertingFeature)); } // 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 + } + } + + } // End of f_TC_ISC_SCCAS_CPT_INV_06 + + function f_TC_ISC_SCCAS_PCT_REF_02(in CSeq p_cSeq_s) + runs on ImsComponent { + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_registrationAS(p_cSeq_s); + + + // STEP: send 488 notAcceptableHere + f_sendResponse(m_Response_Base(c_statusLine488, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); + + +// template CallId p_callId := ?, +// template(value) SipUrl p_requestUri, +// template(value) SipUrl p_referredBy, +// template(value) MessageBody p_messageBody + // Ecpecation: REFER message + tc_ack.start; + alt { + [] SIPP.receive(mw_REFER_Request_stl( + vc_callId, + ?, + ?, + mw_sdpmessageBody)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: REFER message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + } // End of f_TC_ISC_SCCAS_PCT_REF_02 } // End of group Group_9_3 diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 76a95b0..46cceaf 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -490,6 +490,54 @@ module AtsSccas_Templates group request_receive_Steffen { + + 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.Require test := { + fieldName := REQUIRE_E, optionsTags := {"tdilog"} + } + + + + template LibSip_SIPTypesAndValues.ContentType mw_contentType_appclication_sdp := { fieldName := CONTENT_TYPE_E, mTypeSubtype := "appclication/sdp", diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 3bd9164..b5f1b40 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -570,11 +570,39 @@ module AtsSccas_Testcases } // End of TP_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 TP_ISC_SCCAS_PCT_REF_02(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { - // TODO + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 TP_ISC_SCCAS_PCT_REF_02 @@ -648,11 +676,38 @@ module AtsSccas_Testcases } // End of TP_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 TP_ISC_SCCAS_CPT_INV_06(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { - // TODO + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 TP_ISC_SCCAS_CPT_INV_06 -- GitLab From 6a3246fbfa7fe09905ee00ca40e2b9d6a3dfddcd Mon Sep 17 00:00:00 2001 From: Bostjan Date: Wed, 19 Oct 2022 22:13:36 +0200 Subject: [PATCH 161/202] Some PICS added and Error resolution --- ttcn/AtsSccas/AtsSccas_PICS.ttcn | 88 +++++++++++++++++++++++++ ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 18 ++--- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 2 +- 3 files changed, 98 insertions(+), 10 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_PICS.ttcn b/ttcn/AtsSccas/AtsSccas_PICS.ttcn index b64fade..85977c3 100644 --- a/ttcn/AtsSccas/AtsSccas_PICS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PICS.ttcn @@ -19,4 +19,92 @@ PICS used for test case selection boolean PICS_MSC_GM := 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 + //A3/2.2 rejection of malicious SIP REFER requests from remote UE? 6A.4.6 c.10 + //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 + //A3/5.2 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 + //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 + //A3/5.4 procedures for CS to PS dual radio access transfer for calls in an early phase? 9.3.7 c.16 + // + // 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 + //A3/6.1 Procedure for P-CSCF releasing early dialog during PS to PS access transfer? 10.3.6 c.18 + //A3/7 procedures for PS-PS access transfer in conjunction with PS-CS access transfer? 11.3 c.19 + //A3/8 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 + // + //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_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index dd31310..a5d4f38 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -903,10 +903,10 @@ module AtsSccas_TCFunctions { ?, ?, //mw_sccas_featureCaps({}) - mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator",{-})), - (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator",{-})), - (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator",{-})), - (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator",{-})) + mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), + (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), + (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), + (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")) }) )) { log("*** " & __SCOPE__ & ": PASS: 183 message was received ***"); @@ -918,11 +918,11 @@ module AtsSccas_TCFunctions { ?, ?, ?, - mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator",{-})), - (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator",{-})), - (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator",{-})), - (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator",{-})), - (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator",{-})) + mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), + (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), + (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), + (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")), + (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator")) }) )) { tc_wait.stop; diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 643149c..3cbcdaa 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -773,7 +773,7 @@ module AtsSccas_Templates template CallId p_callId, template CSeq p_cSeq, template(present) PChargingVector p_chargingVector := ?, - template(omit) FeatureCaps p_featureCaps := omit + template FeatureCaps p_featureCaps := * ) modifies mw_Response_StatusCode_Base := { msgHeader := { pChargingVector := p_chargingVector, -- GitLab From 9d18787211cc3bbec114c5a4267deac11a7dff60 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Thu, 20 Oct 2022 02:19:07 +0200 Subject: [PATCH 162/202] New PICS added --- ttcn/AtsSccas/AtsSccas_PICS.ttcn | 60 ++++-- ttcn/AtsSccas/AtsSccas_TestControl.ttcn | 4 +- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 176 +++++++++--------- .../AtsSccas/AtsSccas_Testcases_TS124292.ttcn | 32 ++-- 4 files changed, 156 insertions(+), 116 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_PICS.ttcn b/ttcn/AtsSccas/AtsSccas_PICS.ttcn index 85977c3..7d68ae2 100644 --- a/ttcn/AtsSccas/AtsSccas_PICS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PICS.ttcn @@ -12,12 +12,15 @@ modulepar { PICS used for test case selection *************************************************************************************************** */ - /** @desc boolean PICS ref: A-3/5 - True, if SUT/SCSCF requires ... + /** @desc Does IUT acts as the SCC-AS? + @see ETSI TS 103 833-1 */ - boolean PICS_SCCAS_GM := false; + boolean PICS_SCCAS_IUT := false; - boolean PICS_MSC_GM := false; + /** @desc Does IUT acts as the SCC-AS? + @see ETSI TS 103 833-1 + */ + boolean PICS_MSC_IUT := false; } group PICS_A2 { @@ -58,7 +61,13 @@ PICS used for test case selection //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 - //A3/2.2 rejection of malicious SIP REFER requests from remote UE? 6A.4.6 c.10 + + + /** @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 @@ -68,15 +77,44 @@ PICS used for test case selection //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 - //A3/5.2 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 + + + /** @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 - //A3/5.4 procedures for CS to PS dual radio access transfer for calls in an early phase? 9.3.7 c.16 - // + + /** @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 - //A3/6.1 Procedure for P-CSCF releasing early dialog during PS to PS access transfer? 10.3.6 c.18 - //A3/7 procedures for PS-PS access transfer in conjunction with PS-CS access transfer? 11.3 c.19 - //A3/8 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 + + /** @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 diff --git a/ttcn/AtsSccas/AtsSccas_TestControl.ttcn b/ttcn/AtsSccas/AtsSccas_TestControl.ttcn index a7ca1cf..c43ba74 100644 --- a/ttcn/AtsSccas/AtsSccas_TestControl.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TestControl.ttcn @@ -21,7 +21,7 @@ module AtsSccas_TestControl method := "INVITE" } - if (PICS_SCCAS_GM == true) { + 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)); @@ -30,7 +30,7 @@ module AtsSccas_TestControl execute(TC_ISC_SCCAS_RSC_REG_06(v_cSeq)); } - if (PICS_MSC_GM == true) { + if (PICS_MSC_IUT == true) { execute(TC_ISC_SCCAS_MSC_REG_01(v_cSeq)); execute(TC_ISC_SCCAS_MSC_REG_02(v_cSeq)); } diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 5c4ce6b..1d42b83 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -36,8 +36,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -65,8 +65,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -97,8 +97,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -130,8 +130,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_atcf; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -164,8 +164,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_msc; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -198,8 +198,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_msc; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -235,8 +235,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -253,6 +253,8 @@ module AtsSccas_Testcases } // End of TC_ISC_SCCAS_GEN_INV_01 +//TODO add check of PICS_SCCAS_REJECTION_OF_MALICIOUS_REFER in TP_ISC_SCCAS_GEN_REF_01 + } // End of group TP_6A_4_2_SIP_INVITE_request } // End of group Group_6A_4 @@ -271,8 +273,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -304,8 +306,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -341,8 +343,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -373,8 +375,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -410,8 +412,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -444,8 +446,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -481,8 +483,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -514,8 +516,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -540,7 +542,7 @@ module AtsSccas_Testcases testcase TP_ISC_SCCAS_PCT_UPD_01(inout CSeq p_cSeq_s) runs on ServerSyncComp - system TestAdapter { + system TestAdapter {//TODO add PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG // TODO @@ -582,8 +584,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -653,8 +655,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -688,8 +690,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -719,8 +721,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -757,8 +759,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -786,8 +788,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -815,8 +817,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -844,8 +846,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -873,8 +875,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -902,8 +904,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -931,8 +933,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -960,8 +962,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -993,8 +995,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -1022,8 +1024,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -1051,8 +1053,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + 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; } @@ -1084,8 +1086,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1113,8 +1115,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1142,8 +1144,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1171,8 +1173,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1200,8 +1202,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1229,8 +1231,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1258,8 +1260,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1287,8 +1289,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1316,8 +1318,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1345,8 +1347,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1374,8 +1376,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1403,8 +1405,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -1432,8 +1434,8 @@ module AtsSccas_Testcases var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_SCCAS_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); + if (not PICS_SCCAS_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_IUT' shall be set to true for executing the TC. ***"); stop; } diff --git a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn index 6c90d14..947cc38 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases_TS124292.ttcn @@ -32,8 +32,8 @@ module AtsSccas_Testcases_TS124292 var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_MSC_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' shall be set to true for executing the TC. ***"); + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -59,8 +59,8 @@ module AtsSccas_Testcases_TS124292 var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_MSC_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' shall be set to true for executing the TC. ***"); + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -90,8 +90,8 @@ module AtsSccas_Testcases_TS124292 var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_MSC_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' shall be set to true for executing the TC. ***"); + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -117,8 +117,8 @@ module AtsSccas_Testcases_TS124292 var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_MSC_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' shall be set to true for executing the TC. ***"); + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -148,8 +148,8 @@ module AtsSccas_Testcases_TS124292 var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_MSC_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' shall be set to true for executing the TC. ***"); + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -175,8 +175,8 @@ module AtsSccas_Testcases_TS124292 var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_MSC_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' shall be set to true for executing the TC. ***"); + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -206,8 +206,8 @@ module AtsSccas_Testcases_TS124292 var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_MSC_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' shall be set to true for executing the TC. ***"); + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); stop; } @@ -233,8 +233,8 @@ module AtsSccas_Testcases_TS124292 var ImsComponent v_imsComponent_ueims; // Test control - if (not PICS_MSC_GM) { - log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_GM' shall be set to true for executing the TC. ***"); + if (not PICS_MSC_IUT) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_MSC_IUT' shall be set to true for executing the TC. ***"); stop; } -- GitLab From 24848939f3297547a61920901bbf584d59275853 Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 20 Oct 2022 12:22:00 +0200 Subject: [PATCH 163/202] updated tc function TP_ISC_SCCAS_ORI_INV_02 and templates --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 225 ++++++++---------------- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 36 +++- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 8 +- 3 files changed, 114 insertions(+), 155 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 2f3187d..c4e732b 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -795,75 +795,8 @@ module AtsSccas_TCFunctions { runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; - var template(value) REGISTER_Request m_register3ptyUe; - var template(value) RequestUnion m_req; - var template(value) Response m_ResponseReg_3ptyUe; - - // Preamble - f_init_userprofile(c_userProfile_PCSCFwithHomeUE); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - f_initSipUrl(c_userProfile_PCSCFwithHomeUE); - - //Registration - f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER - m_register3ptyUe := m_register_ue_srvcc( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - 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_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_REGISTER_Request_AS( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - -, - "600000", - m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , - m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) - ), - mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - + f_registrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_IncCSeq(v_cSeq_s); @@ -878,23 +811,23 @@ module AtsSccas_TCFunctions { -, -, -, m_MBody_SDP(vc_sdp_local) )); - tc_ack.start; + tc_wait.start; alt { [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { repeat } [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { - tc_ack.stop; + tc_wait.stop; log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } - [] tc_ack.timeout { + [] tc_wait.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync } } - //TODO Deregistration? + f_deregistrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } //End of function f_TC_ISC_SCCAS_ORI_INV_01 @@ -907,79 +840,12 @@ module AtsSccas_TCFunctions { * @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) + function f_TC_ISC_SCCAS_ORI_INV_02_UE(in CSeq p_cSeq_s) runs on ImsComponent { // Local variables var CSeq v_cSeq_s := p_cSeq_s; - var template(value) REGISTER_Request m_register3ptyUe; - var template(value) RequestUnion m_req; - var template(value) Response m_ResponseReg_3ptyUe; - // Preamble - f_init_userprofile(c_userProfile_PCSCFwithHomeUE); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - f_initSipUrl(c_userProfile_PCSCFwithHomeUE); - - //Registration - f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER - m_register3ptyUe := m_register_ue_srvcc( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - 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_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_REGISTER_Request_AS( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - -, - "600000", - m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , - m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) - ), - mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - + f_registrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_IncCSeq(v_cSeq_s); @@ -997,26 +863,85 @@ module AtsSccas_TCFunctions { tc_ack.start; alt { [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 1xx message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + repeat } - [] SIPP.receive(mw_sccas_Response_2xxonINVITE(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + 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 + } + } + - //TODO Deregistration? + 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 diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 2a8e07a..7fbbc7f 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -54,7 +54,7 @@ module AtsSccas_Templates fcParams := p_fcParams } // End of template m_fcValue - template FcValue mw_fcValue( + template (present) FcValue mw_fcValue( template (present) charstring p_wildcard := ?, template SemicolonParam_List p_fcParams := * ) := { @@ -373,6 +373,25 @@ module AtsSccas_Templates }, messageBody := p_mb } + 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 { @@ -588,6 +607,21 @@ module AtsSccas_Templates }, 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(omit) FeatureCaps p_featureCaps := omit + ) modifies mw_Response_StatusCode_Base := { + msgHeader := { + pChargingVector := p_chargingVector, + featureCaps := p_featureCaps + } + } + } } group request_receive_Yann { } diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index f940ec6..e59f45c 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -311,15 +311,15 @@ module AtsSccas_Testcases // 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)); - + f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_ORI_INV_02_UE(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 -- GitLab From 84e3c6acd258bdb1f1f49433fc373e71db1ab024 Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 20 Oct 2022 13:35:02 +0200 Subject: [PATCH 164/202] added tc function TP_ISC_SCCAS_TER_INV_01 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 51 ++++++++++++++++++++++++- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 36 ++++++++++++++++- 2 files changed, 85 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 58ae346..2afb125 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -903,7 +903,7 @@ module AtsSccas_TCFunctions { ?, ?, //mw_sccas_featureCaps({}) - mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator",{-})), + mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator",{-})), (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator",{-})), (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator",{-})) @@ -947,6 +947,55 @@ module AtsSccas_TCFunctions { } // 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 { diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 09397fb..281a0c0 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -260,7 +260,7 @@ module AtsSccas_Testcases 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 */ @@ -326,6 +326,40 @@ module AtsSccas_Testcases } // 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 { -- GitLab From ded0c1f697ec47119324cffa1c4ee9414a627a9d Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Thu, 20 Oct 2022 15:14:04 +0200 Subject: [PATCH 165/202] refined templates --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index a5d4f38..8f1372e 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1450,7 +1450,7 @@ module AtsSccas_TCFunctions { )); tc_ack.start; alt { - [] SIPP.receive(mw_INVITE_Request_contact(?)) { + [] 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 @@ -2017,7 +2017,7 @@ module AtsSccas_TCFunctions { )); tc_ack.start; alt { - [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { + [] 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 @@ -2085,7 +2085,7 @@ module AtsSccas_TCFunctions { )); tc_ack.start; alt { - [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { + [] 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 -- GitLab From 3aaffbb9aa17c12c711710a281fb9e38b68cf9b5 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Thu, 20 Oct 2022 15:39:28 +0200 Subject: [PATCH 166/202] refined templates --- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 3cbcdaa..bb546ff 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -92,6 +92,15 @@ module AtsSccas_Templates } // 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 { -- GitLab From 1f6c5e3b787be4426fcf299c0e70f4ba9df7b1df Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Thu, 20 Oct 2022 15:39:32 +0200 Subject: [PATCH 167/202] refined templates --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 8f1372e..9cf85f9 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -2221,7 +2221,7 @@ module AtsSccas_TCFunctions { vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, - vc_contact, // TODO g3gppps2csSrvccTermPreAlerting + m_contact_wildcard("g3gppps2csSrvccTermPreAlerting"), -, -, -, m_MBody_SDP(vc_sdp_local) )); @@ -2289,7 +2289,7 @@ module AtsSccas_TCFunctions { vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, - vc_contact, // TODO g3gppPs2csSrvccOrigPreAlerting + m_contact_wildcard("g3gppPs2csSrvccOrigPreAlerting"), -, -, -, m_MBody_SDP(vc_sdp_local) )); -- GitLab From 496ca42f5b9fdd4576b23177ca4419718866d0d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 20 Oct 2022 16:00:45 +0200 Subject: [PATCH 168/202] new TCs in section 9.3 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 53 +++++++++++++++++++++++++ ttcn/AtsSccas/AtsSccas_Templates.ttcn | 7 +--- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 32 ++++++++++++--- 3 files changed, 81 insertions(+), 11 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index a5d4f38..e989281 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1391,6 +1391,59 @@ module AtsSccas_TCFunctions { } } // End of f_TC_ISC_SCCAS_PCT_REF_02 + + function f_TC_ISC_SCCAS_PCT_INV_05(in CSeq p_cSeq_s) + runs on ImsComponent { + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_registrationAS(p_cSeq_s); + + // TODO: + // one dialog is early dialog + // and + // a SIP 180 (Ringing) response to the SIP INVITE request has not been received yet in any of the existing dialogs + // and + // the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting feature-capability indicator as in a Feature-Caps header field of SIP 18x responses + // and + // the Contact header field in the initial SIP INVITE request sent by the SC UE towards the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting media feature tag as + // and + // the remote leg is not a precondition enabled dialog + + + // STEp: send invite + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + omit, + vc_route, + m_supported_replaces, + m_messageBody_SDP_mediaOnly + + )); + + // TDOD PEarlyMedia indicating value "the last received P-Early-Media header field", + + // TODO: Contact indicating value "set to the Contact header field provided by the served UE at the creation of the dialog", + // TDOD: SDP containing Media indicating value "the media characteristics as received in the SIP INVITE request due to PS to CS STN (including any precondition mechanism specific SDP attributes)"; + f_awaitingUPDATE(mw_UPDATE_Request_ContactChange(vc_callId, vc_contact, mw_contentType_appclication_sdp, ?)); + + + + + } // End of f_TC_ISC_SCCAS_PCT_INV_05 + + } // End of group Group_9_3 diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 3cbcdaa..41147eb 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -579,12 +579,7 @@ module AtsSccas_Templates } } - template LibSip_SIPTypesAndValues.Require test := { - fieldName := REQUIRE_E, optionsTags := {"tdilog"} - } - - - + template LibSip_SIPTypesAndValues.ContentType mw_contentType_appclication_sdp := { fieldName := CONTENT_TYPE_E, diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 28c3ef5..5c4ce6b 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -546,13 +546,13 @@ module AtsSccas_Testcases } // End of TP_ISC_SCCAS_PCT_UPD_01 - testcase TP_ISC_PCT_RES_02(inout CSeq p_cSeq_s) + testcase TP_ISC_SCCAS_PCT_RES_02(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { // TODO - } // End of TP_ISC_PCT_RES_02 + } // End of TP_ISC_SCCAS_PCT_RES_02 testcase TP_ISC_SCCAS_PCT_INV_05(inout CSeq p_cSeq_s) runs on ServerSyncComp @@ -712,13 +712,35 @@ module AtsSccas_Testcases } // End of TP_ISC_SCCAS_CPT_INV_06 - testcase TP_ISC_SCCAS_PCT_INV_04(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_PCT_INV_05(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { - // TODO + var ImsComponent v_imsComponent_ueims; + + // Test control + if (not PICS_SCCAS_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 TP_ISC_SCCAS_PCT_INV_04 + } // End of TC_ISC_SCCAS_PCT_INV_05 } // End of group Group_9_3 -- GitLab From 31155c12397b1a9bcf9cbd8fc4b5eff8c90378e1 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Thu, 20 Oct 2022 16:35:20 +0200 Subject: [PATCH 169/202] refined templates --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 34 ++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 35f72ad..0afe292 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -2470,7 +2470,7 @@ module AtsSccas_TCFunctions { 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_IncCSeq(v_cSeq_s); f_setHeadersOPTIONS(v_cSeq_s); f_SendOPTIONS( m_OPTIONS_Request_Base( vc_requestUri, @@ -3135,6 +3135,38 @@ module AtsSccas_TCFunctions { SIPP.send(p_request) to vc_sent_label; } + /** + * @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 helpers } // End of module AtsSccas_TCFunctions \ No newline at end of file -- GitLab From 34822bfa14fd1bb95c9a525abf2f951b856e3cb2 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Thu, 20 Oct 2022 16:47:47 +0200 Subject: [PATCH 170/202] refined templates --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 0afe292..f1c41e7 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -2673,7 +2673,7 @@ module AtsSccas_TCFunctions { 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_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, @@ -2740,7 +2740,7 @@ module AtsSccas_TCFunctions { 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_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, @@ -2943,7 +2943,7 @@ module AtsSccas_TCFunctions { 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_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, @@ -3010,7 +3010,7 @@ module AtsSccas_TCFunctions { 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_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, -- GitLab From d9f81730438c9f5246b8cb119a75a277e836857a Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Thu, 20 Oct 2022 17:13:51 +0200 Subject: [PATCH 171/202] refined templates --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 48 ++++++++++++------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index f1c41e7..1407e4f 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1513,7 +1513,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_RIN_01 @@ -1581,7 +1581,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_RIN_02 @@ -1649,7 +1649,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_RIN_03 @@ -1717,7 +1717,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_RIN_04 @@ -1795,7 +1795,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_BYE_01 @@ -1873,7 +1873,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_BYE_02 @@ -1940,7 +1940,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_CAN_01 @@ -2008,7 +2008,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PPT_RES_01 @@ -2080,7 +2080,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CON_RIN_01 @@ -2148,7 +2148,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CON_RIN_02 @@ -2216,7 +2216,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CON_RIN_03 @@ -2290,7 +2290,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PCT_INV_06 @@ -2358,7 +2358,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PCT_INV_02 @@ -2425,7 +2425,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_PCT_INV_03 @@ -2492,7 +2492,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_MED_OPT_01 @@ -2560,7 +2560,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_07 @@ -2628,7 +2628,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_08 @@ -2695,7 +2695,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_09 @@ -2762,7 +2762,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_10 @@ -2830,7 +2830,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_11 @@ -2898,7 +2898,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_12 @@ -2965,7 +2965,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_13 @@ -3032,7 +3032,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_CPT_INV_14 @@ -3097,7 +3097,7 @@ module AtsSccas_TCFunctions { } } - // TODO Deregistration? + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of function f_TC_ISC_SCCAS_TER_BYE_01 -- GitLab From 2735e3615dd11954cd5d33d09bfd5e015df399d0 Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 20 Oct 2022 17:16:10 +0200 Subject: [PATCH 172/202] added tc function TP_ISC_SCCAS_GEN_INV_02 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 68 ++++++++++++++++++++----- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 15 +++++- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 35 ++++++++++++- 3 files changed, 102 insertions(+), 16 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index cf5be08..cd29988 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -734,7 +734,11 @@ module AtsSccas_TCFunctions { 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 @@ -761,17 +765,55 @@ module AtsSccas_TCFunctions { -, -, -, 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 - } - } + + 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); @@ -780,7 +822,7 @@ module AtsSccas_TCFunctions { } // End of function f_TC_ISC_SCCAS_GEN_INV_02 - } // End of group TP_6A_4_2_SIP_INVITE_request + } // End of group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE } // End of group Group_6A_4 diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 3cbcdaa..455cd11 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -101,7 +101,16 @@ module AtsSccas_Templates } group HeaderTemplatesIztok { - } + template Accept mw_accept( template AcceptBody_List p_acceptParams := *) := { + fieldName := ACCEPT_E, + acceptArgs := p_acceptParams + } + + template RecvInfo mw_recvinfo( template InfoPackage_List p_infoPackage_list ) :={ + fieldName := RECV_INFO_E, + infoPackageList :=p_infoPackage_list + } +} group HeaderTemplatesYann { } @@ -777,7 +786,9 @@ module AtsSccas_Templates ) modifies mw_Response_StatusCode_Base := { msgHeader := { pChargingVector := p_chargingVector, - featureCaps := p_featureCaps + featureCaps := p_featureCaps, + accept := mw_accept({{"application/vnd.3gpp.state-and-event-info.xml"}}), + recvInfo := mw_recvinfo({{"g3gppStateAndEventPackageName"}}) } } } diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 3fc2258..136013d 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -252,8 +252,41 @@ module AtsSccas_Testcases 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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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_2_SIP_INVITE_request + } // End of group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE } // End of group Group_6A_4 -- GitLab From 0b9b15ff0c78c96f89345afb7339bf4fa5b730fc Mon Sep 17 00:00:00 2001 From: juvancic Date: Thu, 20 Oct 2022 17:55:24 +0200 Subject: [PATCH 173/202] added tc function TP_ISC_SCCAS_GEN_RIN_02 --- ttcn/AtsSccas/AtsSccas_Steps.ttcn | 6 +++ ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 53 +++++++++++++++++++++++++ ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 34 +++++++++++++++- 3 files changed, 92 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn index d0de7f5..c799fb2 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -611,6 +611,12 @@ module AtsSccas_Steps { } } } //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 + } //end group CommonProcedures } // End of module AtsSccas_Steps diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 39a5f71..82a249f 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -824,6 +824,59 @@ module AtsSccas_TCFunctions { } // End of group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE + group TP_6A_4_5_Target_refresh_request_for_a_dialog_and_associated_responses { + + /** + * @desc Verify that the SCCAS sends 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_deregistrationAS(v_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } //End of function f_TC_ISC_SCCAS_GEN_RIN_02 + + } //End of group TP_6A_4_5_Target_refresh_request_for_a_dialog_and_associated_responses + } // End of group Group_6A_4 group Group_7_3 { diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index f1723ea..ebadb8f 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -228,7 +228,7 @@ module AtsSccas_Testcases * @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) + testcase TP_ISC_SCCAS_GEN_INV_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { //Variables @@ -287,7 +287,39 @@ module AtsSccas_Testcases } // 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_5_Target_refresh_request_for_a_dialog_and_associated_responses { + + /* + * @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_GM) { + log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' 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 { } // End of group Group_6A_4 group Group_7_3 { -- GitLab From d3da5b17a7d8e6c0fae1f4a325db95d6a7686342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Fri, 21 Oct 2022 09:32:45 +0200 Subject: [PATCH 174/202] new function and template section 9.3 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 36 +++++++++++++++++++++++++ ttcn/AtsSccas/AtsSccas_Templates.ttcn | 24 +++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 35f72ad..fad5334 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1444,6 +1444,42 @@ module AtsSccas_TCFunctions { } // End of f_TC_ISC_SCCAS_PCT_INV_05 + function f_TC_ISC_SCCAS_PCT_RES_02(in CSeq p_cSeq_s) + runs on ImsComponent { + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_registrationAS(p_cSeq_s); + + // STEP: send r_200_ok + f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); + + // Expeted Result: r_1xx_Any + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_1xx_stl( + vc_callId, + vc_cSeq, + ?, // TODO: EarlyMedia indicating value "the last received P-Early-Media header field", + mw_contentType_appclication_sdp, + mw_sdpmessageBody + )) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: REFER message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + + } + } // End of group Group_9_3 diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index ae892ed..ec68e97 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -547,6 +547,30 @@ module AtsSccas_Templates group request_receive_Steffen { + + template(present) Response mw_Response_1xx_stl( + 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 := ?, -- GitLab From e2b51ab302f7e2e615bdba4cf63def2280ba7691 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 21 Oct 2022 09:46:40 +0200 Subject: [PATCH 175/202] added tc function TP_ISC_SCCAS_GEN_RIN_01 --- ttcn/AtsSccas/AtsSccas_Steps.ttcn | 5 ++ ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 113 +++++++++++++++++++++++- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 77 +++++++++++----- 3 files changed, 169 insertions(+), 26 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn index c799fb2..f66ae35 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -617,6 +617,11 @@ module AtsSccas_Steps { 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 + } //end group CommonProcedures } // End of module AtsSccas_Steps diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 82a249f..f5095f1 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -825,6 +825,115 @@ module AtsSccas_TCFunctions { } // End of group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE group TP_6A_4_5_Target_refresh_request_for_a_dialog_and_associated_responses { + + /** + * @desc Verify that the SCCAS sends 1xx and/or 2xx response to the SIP INVITE target refresh request towards the served user + * @param p_cSeq_s Random CSeq INVITE number + */ + function f_TC_ISC_SCCAS_GEN_RIN_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + f_registrationAS(v_cSeq_s); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + + f_EstablishDialogAS(v_cSeq_s); + + + f_IncCSeq(v_cSeq_s); + f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { + repeat + } + [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); + //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + f_sendResponse( + m_Response_18XonINVITE_AS_Featurecaps( + c_statusLine183, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + -, + - + )); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + //var template FcValue fc:= mw_fcValue("g3gppFeatureCapabilityIndicator",-); + tc_wait.start; + alt { + [] SIPP.receive(mw_Response_PCV_FeatureCaps( + 183, + ?, + ?, + ?, + //mw_sccas_featureCaps({}) + mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), + (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), + (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), + (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")) + }) + )) { + log("*** " & __SCOPE__ & ": PASS: 183 message was received ***"); + //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + repeat + } + [] SIPP.receive(mw_Response_PCV_FeatureCaps( + 200, + ?, + ?, + ?, + mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), + (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), + (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), + (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")), + (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator")) + }) + )) { + tc_wait.stop; + log("*** " & __SCOPE__ & ": PASS: response 200 OK was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_wait.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_ReleaseDialogAS(v_cSeq_s); + f_deregistrationAS(v_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } //End of function f_TC_ISC_SCCAS_GEN_RIN_01 /** * @desc Verify that the SCCAS sends the SIP INVITE target refresh request towards the served user @@ -869,7 +978,7 @@ module AtsSccas_TCFunctions { } } - + f_ReleaseDialogAS(v_cSeq_s); f_deregistrationAS(v_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync @@ -935,7 +1044,7 @@ module AtsSccas_TCFunctions { * @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_UE(in CSeq p_cSeq_s) + 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; diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index ad0d46a..6eabec9 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -289,35 +289,64 @@ module AtsSccas_Testcases } // End of group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE group TP_6A_4_5_Target_refresh_request_for_a_dialog_and_associated_responses { - - /* - * @desc Verify that the SCCAS sends 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; - } + /** + * @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); + // 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)); + //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}); + // synchronize both PTCs on 3 sychronization points + f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); - f_cf_1IscDown(v_imsComponent_ueims); + f_cf_1IscDown(v_imsComponent_ueims); - } // End of TC_ISC_SCCAS_GEN_RIN_02 + } // End of TC_ISC_SCCAS_GEN_RIN_02 } //End of group TP_6A_4_5_Target_refresh_request_for_a_dialog_and_associated_responses { @@ -379,7 +408,7 @@ module AtsSccas_Testcases f_cf_1IscUp(v_imsComponent_ueims); //Start - f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_ORI_INV_02_UE(p_cSeq_s)); + 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}); -- GitLab From e964444ccdb60e4d0cf5d30b6b3d7211a77338be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Fri, 21 Oct 2022 09:54:56 +0200 Subject: [PATCH 176/202] new testcase and update functions section 9.3 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 39 +++++++++++++++++++------ ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 31 ++++++++++++++++++++ 2 files changed, 61 insertions(+), 9 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index be9a018..3d52efb 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1118,6 +1118,9 @@ module AtsSccas_TCFunctions { 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) @@ -1176,6 +1179,7 @@ module AtsSccas_TCFunctions { 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 @@ -1214,7 +1218,10 @@ module AtsSccas_TCFunctions { ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_IISC_SCCAS_CPT_RIN_01 @@ -1252,7 +1259,10 @@ module AtsSccas_TCFunctions { ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_IISC_SCCAS_CPT_ACK_01 @@ -1313,6 +1323,9 @@ module AtsSccas_TCFunctions { ); 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 @@ -1374,6 +1387,9 @@ module AtsSccas_TCFunctions { ); 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 @@ -1450,12 +1466,8 @@ module AtsSccas_TCFunctions { } } -// f_awaitingResponse(mw_UPDATE_Request_ContactChange( -// vc_callId, -// mw_contact_sourceLegAtCreation, -// mw_contentType_appclication_sdp, -// mw_sdpmessageBody)); - // 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_05 @@ -1494,6 +1506,9 @@ module AtsSccas_TCFunctions { 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 @@ -1533,6 +1548,9 @@ module AtsSccas_TCFunctions { 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 @@ -1582,7 +1600,8 @@ module AtsSccas_TCFunctions { // TDOD: SDP containing Media indicating value "the media characteristics as received in the SIP INVITE request due to PS to CS STN (including any precondition mechanism specific SDP attributes)"; f_awaitingUPDATE(mw_UPDATE_Request_ContactChange(vc_callId, vc_contact, mw_contentType_appclication_sdp, ?)); - + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // End of f_TC_ISC_SCCAS_PCT_INV_05 @@ -1621,6 +1640,8 @@ module AtsSccas_TCFunctions { } } + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index ad0d46a..8fa8318 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -654,11 +654,39 @@ module AtsSccas_Testcases } // End of TP_ISC_SCCAS_PCT_RES_02 + + /* + * @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 TP_ISC_SCCAS_PCT_INV_05(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { // TODO + 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_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 TP_ISC_SCCAS_PCT_INV_05 @@ -667,6 +695,9 @@ module AtsSccas_Testcases system TestAdapter { // TODO + + + } // End of TP_ISC_SCCAS_PCT_REF_01 -- GitLab From a002ae4e2a3d21dd969221bf363eeccd248c0043 Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Fri, 21 Oct 2022 10:19:38 +0200 Subject: [PATCH 177/202] move functions to steps --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 40 ------------------------- 1 file changed, 40 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 870adfa..631094f 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -3435,47 +3435,7 @@ module AtsSccas_TCFunctions { } // End of function f_sendRegistrationAndAwait200Ok - /** - * @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; - } - /** - * @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 helpers -- GitLab From 9fa221c6cd538585f0cd909f38905b5f1225123c Mon Sep 17 00:00:00 2001 From: Axel Rennoch Date: Fri, 21 Oct 2022 10:20:23 +0200 Subject: [PATCH 178/202] move functions to steps --- ttcn/AtsSccas/AtsSccas_Steps.ttcn | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn index f66ae35..64efb29 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -489,6 +489,38 @@ module AtsSccas_Steps { LibSip_Steps.f_setHeadersINVITE(p_cSeq_s); } // end f_setHeadersINVITE_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 { @@ -621,6 +653,18 @@ module AtsSccas_Steps { runs on ImsComponent { var CSeq v_cSeq_s := p_cSeq_s; } //end function f_ReleaseDialogAS + + + /** + * @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 -- GitLab From b3dc316c73dfac83a806aec7a1732b310dbbaef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Fri, 21 Oct 2022 10:25:26 +0200 Subject: [PATCH 179/202] update functions section 9.3 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 47 +++++++++++++++++++++++-- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 2 +- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 870adfa..0b2c499 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1327,7 +1327,41 @@ module AtsSccas_TCFunctions { ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); - + + // TODO: the UE entity previouslyEstablishedCallWith + + // 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, ?, ?, ?, ?)); +// template (present) Response ( +// 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 := * + f_deregistrationAS(p_cSeq_s); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync @@ -1368,12 +1402,21 @@ module AtsSccas_TCFunctions { ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); + + // TODO: the UE entity hasReceived200OkOnInitialRequestForDialogWith + + // 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_IISC_SCCAS_CPT_ACK_01 + } // 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 { diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 77dba85..4236c85 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -544,7 +544,7 @@ module AtsSccas_Testcases stop; } - // TODO: setUo "the UE entity isRegisteredTo the IMS" + // f_Registration_IMS -- GitLab From b06ce9725c0ffd45d098e8c3cebab430f49523fb Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 21 Oct 2022 10:30:13 +0200 Subject: [PATCH 180/202] added tc function TP_ISC_SCCAS_GEN_INV_03 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 78 +++++++++++++++++++++++++ ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 35 ++++++++++- 2 files changed, 112 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 95238a9..d2c3f75 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -824,6 +824,84 @@ module AtsSccas_TCFunctions { } // 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 { /** diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 6eabec9..222202b 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -287,7 +287,40 @@ module AtsSccas_Testcases } // 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 { /** -- GitLab From f4a4a60d86a17ff7ef418e2bb0518d03ce388bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Fri, 21 Oct 2022 10:38:29 +0200 Subject: [PATCH 181/202] rename TCs according to naming convetions --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 2 +- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 2 +- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 129 ++++++++++++------------ 3 files changed, 64 insertions(+), 69 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 03a9569..daad6a0 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1776,7 +1776,7 @@ module AtsSccas_TCFunctions { // Expeted Result: r_1xx_Any tc_ack.start; alt { - [] SIPP.receive(mw_Response_1xx_stl( + [] SIPP.receive(mw_Response_1xx_SDPMessage( vc_callId, vc_cSeq, ?, // TODO: EarlyMedia indicating value "the last received P-Early-Media header field", diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 1883c69..c7e6dc9 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -557,7 +557,7 @@ module AtsSccas_Templates group request_receive_Steffen { - template(present) Response mw_Response_1xx_stl( + template(present) Response mw_Response_1xx_SDPMessage( template CallId p_callId, template CSeq p_cSeq, template PEarlyMedia p_PEarlyMedia, diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 4236c85..740cdd8 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -463,7 +463,7 @@ module AtsSccas_Testcases * @desc Verify that the P-CSCF successfully processes an initial INVITE (Originating Leg) with dynamic STI. * @param p_cSeq_s Transaction Id */ - testcase TP_ISC_SCCAS_CPT_INV_01(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_CPT_INV_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { @@ -475,7 +475,6 @@ module AtsSccas_Testcases stop; } - // TODO: setUo "the UE entity isRegisteredTo the IMS" // f_Registration_IMS @@ -489,13 +488,13 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // End of TP_ISC_SCCAS_CPT_INV_01 + } // 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 TP_ISC_SCCAS_CPT_INV_02(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_CPT_INV_02(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { @@ -507,7 +506,6 @@ module AtsSccas_Testcases stop; } - // TODO: setUo "the UE entity isRegisteredTo the IMS" // f_Registration_IMS @@ -525,14 +523,14 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // End of TP_ISC_SCCAS_CPT_INV_02 + } // 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 TP_ISC_SCCAS_CPT_RIN_01(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_CPT_RIN_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { @@ -559,14 +557,14 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // End of TP_ISC_SCCAS_CPT_RIN_01 + } // 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 TP_ISC_SCCAS_CPT_ACK_01(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_CPT_ACK_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { @@ -578,7 +576,6 @@ module AtsSccas_Testcases stop; } - // TODO: setUo "the UE entity isRegisteredTo the IMS" // f_Registration_IMS @@ -596,14 +593,14 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // End of TP_ISC_SCCAS_CPT_ACK_01 + } // 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 TP_ISC_SCCAS_CPT_INV_03(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_CPT_INV_03(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { @@ -630,13 +627,13 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // End of TP_ISC_SCCAS_CPT_INV_03 + } // 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 TP_ISC_SCCAS_CPT_INV_04(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_CPT_INV_04(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { @@ -664,10 +661,10 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // End of TP_ISC_SCCAS_CPT_INV_04 + } // End of TC_ISC_SCCAS_CPT_INV_04 - testcase TP_ISC_SCCAS_PCT_UPD_01(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_PCT_UPD_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter {//TODO add PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG @@ -681,14 +678,14 @@ module AtsSccas_Testcases // TODO - } // End of TP_ISC_SCCAS_PCT_RES_02 + } // 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 TP_ISC_SCCAS_PCT_INV_05(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_PCT_INV_05(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { @@ -705,9 +702,7 @@ module AtsSccas_Testcases // 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)); @@ -717,9 +712,9 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // End of TP_ISC_SCCAS_PCT_INV_05 + } // End of TC_ISC_SCCAS_PCT_INV_05 - testcase TP_ISC_SCCAS_PCT_REF_01(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_PCT_REF_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { @@ -728,14 +723,14 @@ module AtsSccas_Testcases - } // End of TP_ISC_SCCAS_PCT_REF_01 + } // 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 TP_ISC_SCCAS_PCT_REF_02(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_PCT_REF_02(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { @@ -764,47 +759,47 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // End of TP_ISC_SCCAS_PCT_REF_02 + } // End of TC_ISC_SCCAS_PCT_REF_02 - testcase TP_ISC_SCCAS_PCT_RES_01(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_PCT_RES_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { // TODO - } // End of TP_ISC_SCCAS_PCT_RES_01 + } // End of TC_ISC_SCCAS_PCT_RES_01 - testcase TP_ISC_SCCAS_MED_BYE_01(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_MED_BYE_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { // TODO - } // End of TP_ISC_SCCAS_MED_BYE_01 + } // End of TC_ISC_SCCAS_MED_BYE_01 - testcase TP_ISC_SCCAS_MED_RES_01(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_MED_RES_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { // TODO - } // End of TP_ISC_SCCAS_MED_RES_01 + } // End of TC_ISC_SCCAS_MED_RES_01 - testcase TP_ISC_SCCAS_MED_RIN_01(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_MED_RIN_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { // TODO - } // End of TP_ISC_SCCAS_MED_RIN_01 + } // 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 TP_ISC_SCCAS_CPT_INV_05(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_CPT_INV_05(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { @@ -834,14 +829,14 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // End of TP_ISC_SCCAS_CPT_INV_05 + } // 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 TP_ISC_SCCAS_CPT_INV_06(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_CPT_INV_06(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { @@ -869,38 +864,38 @@ module AtsSccas_Testcases f_cf_1IscDown(v_imsComponent_ueims); - } // End of TP_ISC_SCCAS_CPT_INV_06 - + } // 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 +// 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 -- GitLab From 9200a6d0de968ba1ae950241e5388f9961e9bf16 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Wed, 19 Oct 2022 11:59:58 +0200 Subject: [PATCH 182/202] Update AtsSccas_TestControl --- ttcn/AtsSccas/AtsSccas_TestControl.ttcn | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_TestControl.ttcn b/ttcn/AtsSccas/AtsSccas_TestControl.ttcn index c43ba74..32b096b 100644 --- a/ttcn/AtsSccas/AtsSccas_TestControl.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TestControl.ttcn @@ -28,7 +28,27 @@ module AtsSccas_TestControl 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)); -- GitLab From a4f7b73c08a547c8df43b48bd66cd6a7dae96d29 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Mon, 24 Oct 2022 15:34:14 +0200 Subject: [PATCH 183/202] Fixing compiler issues --- ttcn/AtsSccas/AtsSccas_Steps.ttcn | 2 +- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 7122 +++++++++++------------ ttcn/AtsSccas/AtsSccas_Templates.ttcn | 1699 +++--- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 2 +- ttcn/LibSip | 2 +- 5 files changed, 4416 insertions(+), 4411 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn index 64efb29..6207941 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -589,7 +589,7 @@ module AtsSccas_Steps { vc_contact, -, "600000", - m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , + m_contentType_sccas("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) )); diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 6decbd7..d5e9b19 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1,3563 +1,3561 @@ -/* - * @author TTF T016 - * @version $Id$ - * @desc This module provides the TCfunctions used by the test component - * for SCCAS tests. - */ -module AtsSccas_TCFunctions { - - // XSD support - import from XSD all; - - // LibCommon - import from LibCommon_Sync all; - import from LibCommon_VerdictControl all; - import from LibCommon_DataStrings all; - - // LibSip - import from LibSip_SIPTypesAndValues all; - import from LibSip_SDPTypes all; - import from LibSip_Templates all; - import from LibSip_Steps all; - import from LibSip_Interface all; - import from LibSip_PIXITS all; - - // LibIms - import from LibIms_Templates all; - import from LibIms_Steps all; - import from LibIms_SIPTypesAndValues all; - import from LibIms_Interface all; - - // AtsSccas - // import from AtsSccas_TestSystem all; - import from AtsSccas_Templates all; - import from AtsSccas_Steps all; - import from AtsSccas_PICS all; - import from AtsSccas_PIXITS all; - import from AtsSccas_TestConfiguration all; - - group Group_6_3 { - - group TP_6_3_1_General { - - /** - * @desc Verify that the SCCAS successfully obtain/processes 3pty registration information - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_RSC_REG_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - var template(value) REGISTER_Request m_register3ptyUe; - var template(value) RequestUnion m_req; - var template(value) Response m_ResponseReg_3ptyUe; - - - // Preamble - f_init_userprofile(c_userProfile_PCSCFwithHomeUE); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - f_initSipUrl(c_userProfile_PCSCFwithHomeUE); - - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - //Registration - f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER - m_register3ptyUe := m_register_ue_srvcc( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - omit, - omit, - omit - ); - m_req:= {Register:=valueof(m_register3ptyUe)}; - - m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_SipUrl_currDomain(vc_userprofile), - vc_from.addressField.nameAddr.addrSpec - ); - - f_init_userprofile(c_userProfile_SCSCFwithHomeUE); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS - f_initSipUrl(c_userProfile_SCSCFwithHomeUE); - - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone - - f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER - f_SendREGISTER( - m_REGISTER_Request_AS( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - -, - "600000", - m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , - m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_RSC_REG_01 - - /** - * @desc Verify that the SCCAS successfully obtain/processes de-registration information (Expires=0) - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_RSC_REG_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preamble - f_init_userprofile(c_userProfile_SCSCFwithHomeUE); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS - f_initSipUrl(c_userProfile_SCSCFwithHomeUE); - - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone - - f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER - f_SendREGISTER( - m_REGISTER_Request_AS( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - -, - "0", - - , - -) - ); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_RSC_REG_02 - - } // End of group TP_6_3_1_General - - group TP_6_3_2_Triggers_To_ATCF { - - /** - * @desc Verify that the SCCAS successfully obtain/processes SRVCC information - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_RSC_REG_03(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - var template(value) REGISTER_Request m_register3ptyUe; - var template(value) RequestUnion m_req; - var template(value) Response m_ResponseReg_3ptyUe; - - // Preamble - f_init_userprofile(c_userProfile_PCSCFwithHomeUE); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - f_initSipUrl(c_userProfile_PCSCFwithHomeUE); - - //Registration - f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER - m_register3ptyUe := m_register_ue_srvcc( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - m_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), - omit, - omit - ); - m_req:= {Register:=valueof(m_register3ptyUe)}; - - m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_SipUrl_currDomain(vc_userprofile), - vc_from.addressField.nameAddr.addrSpec - ); - - f_init_userprofile(c_userProfile_SCSCFwithHomeUE); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS - f_initSipUrl(c_userProfile_SCSCFwithHomeUE); - - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone - - f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER - f_SendREGISTER( - m_REGISTER_Request_AS( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - -, - "600000", - m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , - m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - //Deregistration - f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER - f_SendREGISTER( - m_REGISTER_Request_AS( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - -, - "0", - - , - -) - ); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_RSC_REG_03 - - - } // End of group TP_6_3_2_Triggers_To_ATCF - - group TP_6_3_3_SRVCC_Information_To_ATCF { - - /** - * @desc Verify that the SCCAS successfully sends MESSAGE providing PS to CS SRVCC information - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_RSC_REG_04_ueims(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - var template(value) REGISTER_Request m_register3ptyUe; - var template(value) RequestUnion m_req; - var template(value) Response m_ResponseReg_3ptyUe; - - // Preamble - f_init_userprofile(c_userProfile_PCSCFwithHomeUE); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - f_initSipUrl(c_userProfile_PCSCFwithHomeUE); - - //Registration - f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER - m_register3ptyUe := m_register_ue_srvcc( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri - { - m_fcValue( - "g-3gpp-atcf-mgmt-uri-in-path", - { - {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} - }) - }), - omit, - omit - ); - m_req:= {Register:=valueof(m_register3ptyUe)}; - - m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_SipUrl_currDomain(vc_userprofile), - vc_from.addressField.nameAddr.addrSpec - ); - - f_init_userprofile(c_userProfile_SCSCFwithHomeUE); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS - f_initSipUrl(c_userProfile_SCSCFwithHomeUE); - - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone - - f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER - f_SendREGISTER( - m_REGISTER_Request_AS( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - -, - "600000", - m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) , - m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe) - )); - tc_ack.start; - alt { -// [] SIPP.receive(mw_sccas_Response_2xxonREGISTER( -// vc_callId, -// vc_cSeq, -// vc_from, -// vc_to, -// vc_via_REG, -// vc_contact, -// mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation -// mw_PAssertedID( -// mw_PAssertedIDValue(PX_SCCAS_URI) -// ) -// )) - [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_RSC_REG_04_ueims - - function f_TC_ISC_SCCAS_RSC_REG_04_atcf(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preamble - //TODO review and add/correct suitable profiles - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Message - LibIms_Steps.f_setHeadersMESSAGE(v_cSeq_s, vc_from.addressField.addrSpecUnion, vc_to.addressField.addrSpecUnion); - f_awaitingMESSAGE( - mw_sccas_MESSAGE_Request( - -, -, - mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation - -, - m_contentType("application/vnd.3gpp.SRVCC-info+xml"), // TODO To be refined during validation - ? // TODO To be refined during validation - ) - ); - f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync - - // Answer to the MESSAGE - f_send200OK(); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - } // End of function f_TC_ISC_SCCAS_RSC_REG_04_atcf - - } // End of group TP_6_3_3_SRVCC_Information_To_ATCF - - group TP_6_3_4_Trigger_SRVCC_To_MSC { - - /** - * @desc Verify that the SCCAS successfully get CS to PS SRVCC information - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_RSC_REG_05_ueims(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - var Contact v_contact; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE"); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_setHeaders_REGISTER(v_cSeq_s); - v_contact := valueof(vc_contact); - v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation - { - "g.3gpp.atcf-mgmt-uri", - {tokenOrHost := PX_ACTF_MGMT_URI} - }, - { - "g.3gpp.path", - {tokenOrHost := PX_ACTF_URI} - } - }; - f_SendREGISTER( - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - v_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -/*m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri - { - m_fcValue( - "g-3gpp-atcf-mgmt-uri\", - { - {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} - }) - })*/, // TODO To be refined during validation - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_RSC_REG_05_ueims - - function f_TC_ISC_SCCAS_RSC_REG_05_msc(in CSeq p_cSeq_s) - runs on ImsComponent { - - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - - f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync - - // deregistration - - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // end function f_TC_ISC_SCCAS_RSC_REG_05_msc - - } // End of group TP_6_3_4_Trigger_SRVCC_To_MSC - - group TP_6_3_5_Providing_SRVCC_To_MSC { - - /** - * @desc Verify that the SCCAS successfully provide CS to PS SRVCC information - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_RSC_REG_06_ueims(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - var Contact v_contact; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - action("Please register UE"); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_setHeaders_REGISTER(v_cSeq_s); - v_contact := valueof(vc_contact); - v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation - { - "g.3gpp.icsi-ref", - {tokenOrHost := PX_ICSI_URI} - } - }; - f_SendREGISTER( - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - v_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -/*m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri - { - m_fcValue( - "g-3gpp-atcf-mgmt-uri-in-path", - { - {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} - }) - })*/, // TODO To be refined during validation - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_sccas_Response_2xxonREGISTER( - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation - mw_PAssertedID( - mw_PAssertedIDValue(PX_SCCAS_URI) - ), // TODO To be refined during validation - mw_acceptContact( - { // TODO To be refined during validation - { - "g.3gpp.path-media", - {tokenOrHost := PX_ICSI_URI} - } - } - ) - )) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_RSC_REG_06_ueims - - function f_TC_ISC_SCCAS_RSC_REG_06_msc(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Message - LibIms_Steps.f_setHeadersMESSAGE(v_cSeq_s, vc_from.addressField.addrSpecUnion, vc_to.addressField.addrSpecUnion); - f_awaitingMESSAGE( - mw_sccas_MESSAGE_Request( - -, -, - mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation - -, - m_contentType("application/vnd.3gpp.SRVCC-info+xml"), // TODO To be refined during validation - ? // TODO To be refined during validation - ) - ); - f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync - - // Answer to the MESSAGE - f_send200OK(); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - } // end function f_TC_ISC_SCCAS_RSC_REG_06_msc - - } // End of group TP_6_3_5_Providing_SRVCC_To_MSC - - } // End of group Group_6_3 - - group Group_6A_4 { - - group TP_6A_4_2_SIP_INVITE_request { - - /** - * @desc Verify that the SCCAS send INVITE for anchored user populated with FeatureCaps header - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_GEN_INV_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_sccas_Response_2xxonINVITE(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // TODO Deregistration? - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_GEN_INV_01 - - } // End of group TP_6A_4_2_SIP_INVITE_request - - group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE { - - /** - * @desc Verify that the SCCAS sends 1xx and/or 2xx response to the SIP INVITE request towards the served user. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_GEN_INV_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preamble - f_registrationAS(v_cSeq_s); - - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { - repeat - } - [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); - //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - f_sendResponse( - m_Response_18XonINVITE_AS_Featurecaps( - c_statusLine183, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG, - -, - - - )); - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - //var template FcValue fc:= mw_fcValue("g3gppFeatureCapabilityIndicator",-); - tc_wait.start; - alt { - [] SIPP.receive(mw_Response_PCV_FeatureCaps( - 183, - ?, - ?, - ?, - mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), - (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), - (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), - (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")), - (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator")) - }) - )) { - tc_wait.stop; - log("*** " & __SCOPE__ & ": PASS: response 183 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_wait.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - // Postamble - f_deregistrationAS(v_cSeq_s); - - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_GEN_INV_02 - - } // End of group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE - - group TP_6A_4_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 - - } // End of group Group_6A_4 - - group Group_7_3 { - group TP_7_3_1_Distinction_of_requests_sent_to_the_SCCAS { - - /** - * @desc Verify that the SCCAS first receives SIP INVITE request from UE/SCSCF - * @param p_cSeq_s Random CSeq INVITE number - */ - function f_TC_ISC_SCCAS_ORI_INV_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - f_registrationAS(v_cSeq_s); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - f_IncCSeq(v_cSeq_s); - f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_wait.start; - alt { - [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { - repeat - } - [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { - tc_wait.stop; - log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_wait.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - - f_deregistrationAS(v_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } //End of function f_TC_ISC_SCCAS_ORI_INV_01 - - } //End of group TP_7_3_1_Distinction_of_requests_sent_to_the_SCCAS - - group TP_7_3_2_Call_origination_procedures_at_the_SCCAS{ - - /** - * @desc Verify that the SCCAS sends 1xx/2xx response to the SIP INVITE request towards the served user - * @param p_cSeq_s Random CSeq INVITE number - */ - function f_TC_ISC_SCCAS_ORI_INV_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - f_registrationAS(v_cSeq_s); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - f_IncCSeq(v_cSeq_s); - f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { - repeat - } - [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); - //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - f_sendResponse( - m_Response_18XonINVITE_AS_Featurecaps( - c_statusLine183, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG, - -, - - - )); - f_sendResponse( - m_Response_2xx_Base( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - //var template FcValue fc:= mw_fcValue("g3gppFeatureCapabilityIndicator",-); - tc_wait.start; - alt { - [] SIPP.receive(mw_Response_PCV_FeatureCaps( - 183, - ?, - ?, - ?, - //mw_sccas_featureCaps({}) - mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), - (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), - (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), - (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")) - }) - )) { - log("*** " & __SCOPE__ & ": PASS: 183 message was received ***"); - //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - repeat - } - [] SIPP.receive(mw_Response_PCV_FeatureCaps( - 200, - ?, - ?, - ?, - mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), - (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), - (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), - (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")), - (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator")) - }) - )) { - tc_wait.stop; - log("*** " & __SCOPE__ & ": PASS: response 200 OK was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_wait.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - - - f_deregistrationAS(v_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } //End of function f_TC_ISC_SCCAS_ORI_INV_02 - - - } //End of group TP_7_3_2_Call_origination_procedures_at_the_SCCAS - - } // End of group Group_7_3 - - group Group_8_3 { - - group TP_8_3_1_Distinction_of_requests_sent_to_the_SCCAS{ - - /** - * @desc VVerify that the SCCAS last receives SIP INVITE request from UE/SCSCF - * @param p_cSeq_s Random CSeq INVITE number - */ - function f_TC_ISC_SCCAS_TER_INV_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - f_registrationAS(v_cSeq_s); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - f_IncCSeq(v_cSeq_s); - f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_wait.start; - alt { - [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { - repeat - } - [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { - tc_wait.stop; - log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_wait.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - - f_deregistrationAS(v_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } //End of function f_TC_ISC_SCCAS_TER_INV_01 - - } // End of group TP_8_3_1_Distinction_of_requests_sent_to_the_SCCAS - } // End of group Group_8_3 - - group Group_9_3 { - - function f_TC_ISC_SCCAS_CPT_INV_01(in CSeq p_cSeq_s) - runs on ImsComponent { - - // TODO: set correct service profiles - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE(m_sccas_invite( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - omit, // template(omit) Require p_require := omit, - vc_route, - m_supported_replaces, //template(omit) Supported p_supported := omit, - omit //template(value) MessageBody p_mb - ) - - ); - f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s)); - - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } - - function f_TC_ISC_SCCAS_CPT_INV_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // initial condition: the UE entity isRegisteredTo the IMS - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE(m_sccas_invite( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - omit, // template(omit) Require p_require := omit, - vc_route, - m_supported_replaces, - m_messageBody_SDP_mediaOnly - - ) - - ); - f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s)); - - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of f_TC_IISC_SCCAS_CPT_INV_02 - - function f_TC_ISC_SCCAS_CPT_RIN_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // initial condition: the UE entity isRegisteredTo the IMS - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - - // TODO: the UE entity previouslyEstablishedCallWith - - // 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, ?, ?, ?, ?)); -// template (present) Response ( -// 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 := * - - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of f_TC_IISC_SCCAS_CPT_RIN_01 - - function f_TC_ISC_SCCAS_CPT_ACK_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // initial condition: the UE entity isRegisteredTo the IMS - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - - // TODO: the UE entity hasReceived200OkOnInitialRequestForDialogWith - - // 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; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // initial condition: the UE entity isRegisteredTo the IMS - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy - - // STEP: send invite - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE(m_sccas_invite_contact( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - m_contact_g3gppSrvccAlertingFeature, // TODO: correct use auf g3gppSrvccAlertingFeatureCapabilityIndicator - omit, // template(omit) Require p_require := omit, - vc_route, - omit, - m_messageBody_SDP_mediaOnly - - ) - - ); - f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppMidcallFeature)); - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of f_TC_ISC_SCCAS_CPT_INV_03 - - function f_TC_ISC_SCCAS_CPT_INV_04(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // initial condition: the UE entity isRegisteredTo the IMS - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy - - // STEP: send invite - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE(m_sccas_invite_contact( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - m_contact_g3gppDrvccAlertingFeature, // TODO: correct use auf g3gppDrvccAlertingFeature - omit, // template(omit) Require p_require := omit, - vc_route, - m_supported_replaces, - omit - - ) - - ); - f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppDrvccAlertingFeature)); - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of f_TC_ISC_SCCAS_CPT_INV_04 - - - function f_TC_ISC_SCCAS_CPT_INV_05(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // initial condition: the UE entity isRegisteredTo the IMS - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy - - // STEP: send invite - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE(m_sccas_invite_contact( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - m_contact_g3gppDrvccOrigPreAlertingFeature, // TODO: correct use auf g3gppDrvccOrigPreAlertingFeature - omit, // template(omit) Require p_require := omit, - vc_route, - m_supported_replaces, - omit // TODO - - ) - - ); - - tc_ack.start; - alt { - [] SIPP.receive(mw_UPDATE_Request_ContactChange( - vc_callId, - mw_contact_sourceLegAtCreation, - mw_contentType_appclication_sdp, - mw_sdpmessageBody)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: UPDATE message received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of f_TC_ISC_SCCAS_CPT_INV_05 - - function f_TC_ISC_SCCAS_CPT_INV_06(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // initial condition: the UE entity isRegisteredTo the IMS - f_registrationAS(p_cSeq_s); - - - // TODO: the IUT entity hasAchievedInitialINVITE // TODO: INVITE contains: g3gppDrvccAlerting - - // STEP: send r_180_ringing - f_sendResponse(m_Response_Base(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); - - // Expected Update - tc_ack.start; - alt { - [] SIPP.receive(mw_UPDATE_Request_ContactChange( - vc_callId, - mw_contact_sourceLegAtCreation, - mw_contentType_appclication_sdp, - mw_sdpmessageBody)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: UPDATE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of f_TC_ISC_SCCAS_CPT_INV_06 - - function f_TC_ISC_SCCAS_PCT_REF_02(in CSeq p_cSeq_s) - runs on ImsComponent { - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // initial condition: the UE entity isRegisteredTo the IMS - f_registrationAS(p_cSeq_s); - - - // STEP: send 488 notAcceptableHere - f_sendResponse(m_Response_Base(c_statusLine488, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); - - -// template CallId p_callId := ?, -// template(value) SipUrl p_requestUri, -// template(value) SipUrl p_referredBy, -// template(value) MessageBody p_messageBody - // Ecpecation: REFER message - tc_ack.start; - alt { - [] SIPP.receive(mw_REFER_Request_stl( - vc_callId, - ?, - ?, - mw_sdpmessageBody)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: REFER message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of f_TC_ISC_SCCAS_PCT_REF_02 - - function f_TC_ISC_SCCAS_PCT_INV_05(in CSeq p_cSeq_s) - runs on ImsComponent { - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // initial condition: the UE entity isRegisteredTo the IMS - f_registrationAS(p_cSeq_s); - - // TODO: - // one dialog is early dialog - // and - // a SIP 180 (Ringing) response to the SIP INVITE request has not been received yet in any of the existing dialogs - // and - // the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting feature-capability indicator as in a Feature-Caps header field of SIP 18x responses - // and - // the Contact header field in the initial SIP INVITE request sent by the SC UE towards the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting media feature tag as - // and - // the remote leg is not a precondition enabled dialog - - - // STEp: send invite - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE(m_sccas_invite( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - omit, - vc_route, - m_supported_replaces, - m_messageBody_SDP_mediaOnly - - )); - - // TDOD PEarlyMedia indicating value "the last received P-Early-Media header field", - - // TODO: Contact indicating value "set to the Contact header field provided by the served UE at the creation of the dialog", - // TDOD: SDP containing Media indicating value "the media characteristics as received in the SIP INVITE request due to PS to CS STN (including any precondition mechanism specific SDP attributes)"; - f_awaitingUPDATE(mw_UPDATE_Request_ContactChange(vc_callId, vc_contact, mw_contentType_appclication_sdp, ?)); - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - - } // End of f_TC_ISC_SCCAS_PCT_INV_05 - - - function f_TC_ISC_SCCAS_PCT_RES_02(in CSeq p_cSeq_s) - runs on ImsComponent { - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // initial condition: the UE entity isRegisteredTo the IMS - f_registrationAS(p_cSeq_s); - - // STEP: send r_200_ok - f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); - - // Expeted Result: r_1xx_Any - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_1xx_SDPMessage( - vc_callId, - vc_cSeq, - ?, // TODO: EarlyMedia indicating value "the last received P-Early-Media header field", - mw_contentType_appclication_sdp, - mw_sdpmessageBody - )) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: REFER message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } - - - } // End of group Group_9_3 - - group Group_10_3 { - - /** - * @desc Verify that the SCC AS successfully processes an INVITE on a previously established dialog if the SIP INVITE request contains a Replaces header field. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PPT_RIN_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite_replaces( // TODO request active speech media component using CS bearer - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local), - m_Replaces(vc_callId.callid,{quotedString:=""},{quotedString:=""}) // indicating access transfer procedure - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_INVITE_Request_contact(mw_sccas_contact())) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PPT_RIN_01 - - /** - * @desc Verify that the SCC AS successfully processes an UPDATE on an existing early dialog if the SIP INVITE request contains a Replaces header field. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PPT_RIN_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO request active speech media component using CS bearer - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_UPDATE_Request_Base(?)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: UPDATE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PPT_RIN_02 - - /** - * @desc Verify that the SCC AS processes an INVITE if it is unable to associate the SIP INVITE request with a confirmed dialog or on a previously established dialog. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PPT_RIN_03(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO Replaces indicating value PX_UE_A_SIP_URI; // indicating access transfer procedure - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine480)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PPT_RIN_03 - - /** - * @desc Verify that the SCC AS processes an INVITE if number of media lines in the Target Access Leg is less than the number of media lines in the Source Access Leg. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PPT_RIN_04(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO TargetDialog indicating value PX_UE_MediaLines; // indicating number of media lines in the Target Access Leg is less than the number of media lines in the Source Access Leg - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine480)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PPT_RIN_04 - - /** - * @desc Verify that the SCC AS successfully processes an BYE on a previously established dialog, if does not receive within this time interval an initial SIP INVITE request. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PPT_BYE_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendBYE( - m_BYE_Request_UE( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG - )); - tc_T1.start(8.0); tc_T1.timeout; // wait 8s - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - tc_ack.start; - alt { - [] SIPP.receive(mw_BYE_Request_Base(?)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: BYE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PPT_BYE_01 - - /** - * @desc Verify that the SCC AS successfully processes an CANCEL on a early dialog. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PPT_BYE_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendBYE( - m_BYE_Request_UE( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG - )); - tc_T1.start(8.0); tc_T1.timeout; // wait 8s - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - tc_ack.start; - alt { - [] SIPP.receive(mw_CANCEL_Request_Base(?)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: CANCEL message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PPT_BYE_02 - - /** - * @desc Verify that the SCC AS successfully processes an CANCEL on a early dialog. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PPT_CAN_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersCANCEL(v_cSeq_s); - f_SendCANCEL( - m_CANCEL_Request_Reason_IMS( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG,vc_route, - 503 - )); - tc_T1.start(8.0); tc_T1.timeout; // wait 8s - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PPT_CAN_01 - - /** - * @desc Verify that the SCC AS successfully processes an SIP 503 (Service Unavailable) response on a early dialog. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PPT_RES_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_2xx_Base( - c_statusLine503, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_T1.start(8.0); tc_T1.timeout; // wait 8s - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine503)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 503 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PPT_RES_01 - - } // End of group Group_10_3 - - group Group_11_3 { - - /** - * @desc Verify that the SCC AS successfully processes an INVITE that includes an active speech media component using CS bearer. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CON_RIN_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO request active speech media component using CS bearer - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_INVITE_Request_contact(mw_sccas_contact())) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CON_RIN_01 - - /** - * @desc Verify that the SCC AS successfully processes an INVITE due to two STIs on the Target Access Leg. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CON_RIN_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO request CS -> PS - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_INVITE_Request_contact(mw_sccas_contact())) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CON_RIN_02 - - /** - * @desc Verify that the SCC AS rejects an INVITE due missing ability to associate it to an ongoing or different SIP dialog. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CON_RIN_03(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine480)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CON_RIN_03 - - - } // End of group Group_11_3 - - group Group_12_3 { - - - /** - * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for terminating call in pre-alerting phase using PS to CS SRVCC procedure. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PCT_INV_06(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - m_contact_wildcard("g3gppps2csSrvccTermPreAlerting"), - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine183)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PCT_INV_06 - - /** - * @desc Verify that SCC AS correctly recognizes and initiated for PS to CS access transfer for originating call in pre-alerting phase using PS to CS SRVCC procedure. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PCT_INV_02(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - m_contact_wildcard("g3gppPs2csSrvccOrigPreAlerting"), - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine183)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 183 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PCT_INV_02 - - /** - * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_PCT_INV_03(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_18x_Base( - c_statusLine183, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: response 200 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_PCT_INV_03 - - /** - * @desc Verify that the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_MED_OPT_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); f_setHeadersOPTIONS(v_cSeq_s); - f_SendOPTIONS( - m_OPTIONS_Request_Base( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 response was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_MED_OPT_01 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of session with active speech media component. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_07(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_07 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of session with inactive speech media component. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_08(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO request active speech media component using CS bearer - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_08 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of originating session in alerting phase. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_09(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_2xx_Base( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine180)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_09 - - /** - * @desc Verify that the SCC AS handles correctly the transfer of terminating session in alerting phase. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_10(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_2xx_Base( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine183)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_10 - - /** - * @desc Verify that the SCC AS handles correctly additional session transfer initiation. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_11(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_11 - - /** - * @desc Verify that the SCC AS handles correctly transfer of session with inactive speech media component. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_12(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendINVITE( - m_sccas_invite( // TODO request active speech media component using CS bearer - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG, - vc_contact, - -, -, -, - m_MBody_SDP(vc_sdp_local) - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_12 - - /** - * @desc Verify that the SCC AS handles correctly transfer of originating session in alerting phase. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_13(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_2xx_Base( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine180)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_13 - - /** - * @desc Verify that the SCC AS handles correctly transfer of terminating session in alerting phase. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_CPT_INV_14(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_sendResponse( - m_Response_2xx_Base( - c_statusLine200, - vc_callId, - p_cSeq_s, - vc_from, - vc_to, - vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine183)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_CPT_INV_14 - - /** - * @desc Verify that the SCC AS correctly behave procedures when the access transfer is completed. - * @param p_cSeq_s Random CSeq REGISTER number - */ - function f_TC_ISC_SCCAS_TER_BYE_01(in CSeq p_cSeq_s) - runs on ImsComponent { - // Local variables - var CSeq v_cSeq_s := p_cSeq_s; - - // Preambule - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - // Registration - f_sendRegistrationAndAwait200Ok( - v_cSeq_s, - m_sccas_register( - vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via_REG, - vc_contact, - m_add_Authorization_digest( - vc_authorization, - {c_Integrity_protected_no} - ), - PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation - PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation - "600000", - -, - m_contentType(c_sdpApplication), // TODO To be refined during validation - m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation - ), - mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) - ); - f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - - // Registration - f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); - f_SendBYE( - m_BYE_Request_UE( - vc_requestUri, - vc_callId, - p_cSeq_s, - vc_from, vc_to, vc_via_REG - )); - tc_ack.start; - alt { - [] SIPP.receive(mw_Response_Base(c_statusLine200)) { - tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync - } - [] tc_ack.timeout { - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync - } - } - - f_deregistrationAS(p_cSeq_s); - f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync - - } // End of function f_TC_ISC_SCCAS_TER_BYE_01 - - } // End of group Group_12_3 - - group helpers { - - function f_sendRegistrationAndAwait200Ok( - in CSeq p_cSeq_s, - in template (omit) REGISTER_Request p_register, - template (present) Response p_response - ) runs on ImsComponent { - f_setHeaders_REGISTER(p_cSeq_s); - f_SendREGISTER(p_register); - tc_ack.start; - alt { - [] SIPP.receive(p_response) { - tc_ack.stop; - } - [] tc_ack.timeout { - f_setVerdict(e_timeout); - } - } - - } // End of function f_sendRegistrationAndAwait200Ok - - - - } // End of group helpers - +/* + * @author TTF T016 + * @version $Id$ + * @desc This module provides the TCfunctions used by the test component + * for SCCAS tests. + */ +module AtsSccas_TCFunctions { + + // XSD support + import from XSD all; + + // LibCommon + import from LibCommon_Sync all; + import from LibCommon_VerdictControl all; + import from LibCommon_DataStrings all; + + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from LibSip_Templates all; + import from LibSip_Steps all; + import from LibSip_Interface all; + import from LibSip_PIXITS all; + + // LibIms + import from LibIms_Templates all; + import from LibIms_Steps all; + import from LibIms_SIPTypesAndValues all; + import from LibIms_Interface all; + + // AtsSccas + // import from AtsSccas_TestSystem all; + import from AtsSccas_Templates all; + import from AtsSccas_Steps all; + import from AtsSccas_PICS all; + import from AtsSccas_PIXITS all; + import from AtsSccas_TestConfiguration all; + + group Group_6_3 { + + group TP_6_3_1_General { + + /** + * @desc Verify that the SCCAS successfully obtain/processes 3pty registration information + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_RSC_REG_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + var template(value) REGISTER_Request m_register3ptyUe; + var template(value) RequestUnion m_req; + var template(value) Response m_ResponseReg_3ptyUe; + + + // Preamble + f_init_userprofile(c_userProfile_PCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + f_initSipUrl(c_userProfile_PCSCFwithHomeUE); + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + //Registration + f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER + m_register3ptyUe := m_register_ue_srvcc( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + omit, + omit, + omit + ); + m_req:= {Register:=valueof(m_register3ptyUe)}; + + m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_SipUrl_currDomain(vc_userprofile), + vc_from.addressField.nameAddr.addrSpec + ); + + f_init_userprofile(c_userProfile_SCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS + f_initSipUrl(c_userProfile_SCSCFwithHomeUE); + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone + + f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER + f_SendREGISTER( + m_REGISTER_Request_AS( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + -, + "600000", + m_contentType_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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + m_sccas_featureCaps({m_fcValue("g3gppAtcfFeatureCapabilityIndicator")}), + omit, + omit + ); + m_req:= {Register:=valueof(m_register3ptyUe)}; + + m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_SipUrl_currDomain(vc_userprofile), + vc_from.addressField.nameAddr.addrSpec + ); + + f_init_userprofile(c_userProfile_SCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS + f_initSipUrl(c_userProfile_SCSCFwithHomeUE); + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone + + f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER + f_SendREGISTER( + m_REGISTER_Request_AS( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + -, + "600000", + m_contentType_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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri + { + m_fcValue( + "g-3gpp-atcf-mgmt-uri-in-path", + { + {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} + }) + }), + omit, + omit + ); + m_req:= {Register:=valueof(m_register3ptyUe)}; + + m_ResponseReg_3ptyUe := m_Response_2xxonREGISTER_IMS( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_SipUrl_currDomain(vc_userprofile), + vc_from.addressField.nameAddr.addrSpec + ); + + f_init_userprofile(c_userProfile_SCSCFwithHomeUE); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS + f_initSipUrl(c_userProfile_SCSCFwithHomeUE); + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone + + f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER + f_SendREGISTER( + m_REGISTER_Request_AS( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + -, + "600000", + m_contentType_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_ACTF_MGMT_URI} + }, + { + "g.3gpp.path", + {tokenOrHost := PX_ACTF_URI} + } + }; + f_SendREGISTER( + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + v_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -/*m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri + { + m_fcValue( + "g-3gpp-atcf-mgmt-uri\", + { + {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} + }) + })*/, // TODO To be refined during validation + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_RSC_REG_05_ueims + + function f_TC_ISC_SCCAS_RSC_REG_05_msc(in CSeq p_cSeq_s) + runs on ImsComponent { + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // deregistration + + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // end function f_TC_ISC_SCCAS_RSC_REG_05_msc + + } // End of group TP_6_3_4_Trigger_SRVCC_To_MSC + + group TP_6_3_5_Providing_SRVCC_To_MSC { + + /** + * @desc Verify that the SCCAS successfully provide CS to PS SRVCC information + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_RSC_REG_06_ueims(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + var Contact v_contact; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + action("Please register UE"); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_setHeaders_REGISTER(v_cSeq_s); + v_contact := valueof(vc_contact); + v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation + { + "g.3gpp.icsi-ref", + {tokenOrHost := PX_ICSI_URI} + } + }; + f_SendREGISTER( + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + v_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -/*m_sccas_featureCaps( // TS 124 237 Clause C.6 Definition of feature-capability indicator g.3gpp.atcfmgmt-uri + { + m_fcValue( + "g-3gpp-atcf-mgmt-uri-in-path", + { + {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} + }) + })*/, // TODO To be refined during validation + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_sccas_Response_2xxonREGISTER( + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation + mw_PAssertedID( + mw_PAssertedIDValue(PX_SCCAS_URI) + ), // TODO To be refined during validation + mw_acceptContact( + { // TODO To be refined during validation + { + "g.3gpp.path-media", + {tokenOrHost := PX_ICSI_URI} + } + } + ) + )) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_RSC_REG_06_ueims + + function f_TC_ISC_SCCAS_RSC_REG_06_msc(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Message + LibIms_Steps.f_setHeadersMESSAGE(v_cSeq_s, vc_from.addressField.addrSpecUnion, vc_to.addressField.addrSpecUnion); + f_awaitingMESSAGE( + mw_sccas_MESSAGE_Request( + -, -, + mw_pChargingVector(-, { tokenOrHost := "orig-ioi" }), // TODO To be refined during validation + -, + m_contentType("application/vnd.3gpp.SRVCC-info+xml"), // TODO To be refined during validation + ? // TODO To be refined during validation + ) + ); + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync + + // Answer to the MESSAGE + f_send200OK(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + } // end function f_TC_ISC_SCCAS_RSC_REG_06_msc + + } // End of group TP_6_3_5_Providing_SRVCC_To_MSC + + } // End of group Group_6_3 + + group Group_6A_4 { + + group TP_6A_4_2_SIP_INVITE_request { + + /** + * @desc Verify that the SCCAS send INVITE for anchored user populated with FeatureCaps header + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_GEN_INV_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_sccas_Response_2xxonINVITE(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // TODO Deregistration? + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_GEN_INV_01 + + } // End of group TP_6A_4_2_SIP_INVITE_request + + group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE { + + /** + * @desc Verify that the SCCAS sends 1xx and/or 2xx response to the SIP INVITE request towards the served user. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_GEN_INV_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preamble + f_registrationAS(v_cSeq_s); + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { + repeat + } + [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); + //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + f_sendResponse( + m_Response_18XonINVITE_AS_Featurecaps( + c_statusLine183, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + -, + - + )); + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + //var template FcValue fc:= mw_fcValue("g3gppFeatureCapabilityIndicator",-); + tc_wait.start; + alt { + [] SIPP.receive(mw_Response_PCV_FeatureCaps( + 183, + ?, + ?, + ?, + mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), + (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), + (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), + (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")), + (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator")) + }) + )) { + tc_wait.stop; + log("*** " & __SCOPE__ & ": PASS: response 183 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_wait.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + // Postamble + f_deregistrationAS(v_cSeq_s); + + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_GEN_INV_02 + + } // End of group TP_6A_4_3_SIP_INVITE_responses_towards_the_SC_UE + + group TP_6A_4_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 + + } // End of group Group_6A_4 + + group Group_7_3 { + group TP_7_3_1_Distinction_of_requests_sent_to_the_SCCAS { + + /** + * @desc Verify that the SCCAS first receives SIP INVITE request from UE/SCSCF + * @param p_cSeq_s Random CSeq INVITE number + */ + function f_TC_ISC_SCCAS_ORI_INV_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + f_registrationAS(v_cSeq_s); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + f_IncCSeq(v_cSeq_s); + f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_wait.start; + alt { + [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { + repeat + } + [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { + tc_wait.stop; + log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_wait.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + + f_deregistrationAS(v_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } //End of function f_TC_ISC_SCCAS_ORI_INV_01 + + } //End of group TP_7_3_1_Distinction_of_requests_sent_to_the_SCCAS + + group TP_7_3_2_Call_origination_procedures_at_the_SCCAS{ + + /** + * @desc Verify that the SCCAS sends 1xx/2xx response to the SIP INVITE request towards the served user + * @param p_cSeq_s Random CSeq INVITE number + */ + function f_TC_ISC_SCCAS_ORI_INV_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + f_registrationAS(v_cSeq_s); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + f_IncCSeq(v_cSeq_s); + f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { + repeat + } + [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); + //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + f_sendResponse( + m_Response_18XonINVITE_AS_Featurecaps( + c_statusLine183, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG, + -, + - + )); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + p_cSeq_s, + vc_from, + vc_to, + vc_via_REG + )); + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + //var template FcValue fc:= mw_fcValue("g3gppFeatureCapabilityIndicator",-); + tc_wait.start; + alt { + [] SIPP.receive(mw_Response_PCV_FeatureCaps( + 183, + ?, + ?, + ?, + //mw_sccas_featureCaps({}) + mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), + (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), + (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), + (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")) + }) + )) { + log("*** " & __SCOPE__ & ": PASS: 183 message was received ***"); + //f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + repeat + } + [] SIPP.receive(mw_Response_PCV_FeatureCaps( + 200, + ?, + ?, + ?, + mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator")), + (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator")), + (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator")), + (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator")), + (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator")) + }) + )) { + tc_wait.stop; + log("*** " & __SCOPE__ & ": PASS: response 200 OK was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_wait.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + + + f_deregistrationAS(v_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } //End of function f_TC_ISC_SCCAS_ORI_INV_02 + + + } //End of group TP_7_3_2_Call_origination_procedures_at_the_SCCAS + + } // End of group Group_7_3 + + group Group_8_3 { + + group TP_8_3_1_Distinction_of_requests_sent_to_the_SCCAS{ + + /** + * @desc VVerify that the SCCAS last receives SIP INVITE request from UE/SCSCF + * @param p_cSeq_s Random CSeq INVITE number + */ + function f_TC_ISC_SCCAS_TER_INV_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + f_registrationAS(v_cSeq_s); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + f_IncCSeq(v_cSeq_s); + f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_wait.start; + alt { + [] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) { + repeat + } + [] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) { + tc_wait.stop; + log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_wait.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + + f_deregistrationAS(v_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } //End of function f_TC_ISC_SCCAS_TER_INV_01 + + } // End of group TP_8_3_1_Distinction_of_requests_sent_to_the_SCCAS + } // End of group Group_8_3 + + group Group_9_3 { + + function f_TC_ISC_SCCAS_CPT_INV_01(in CSeq p_cSeq_s) + runs on ImsComponent { + + // TODO: set correct service profiles + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + omit, + 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + omit, // template(omit) Require p_require := omit, + vc_route, + m_supported_replaces, + m_messageBody_SDP_mediaOnly + ) + + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s)); + + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of f_TC_IISC_SCCAS_CPT_INV_02 + + function f_TC_ISC_SCCAS_CPT_RIN_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + + // TODO: the UE entity previouslyEstablishedCallWith + + // 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, ?, ?, ?, ?)); +// template (present) Response ( +// 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 := * + + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of f_TC_IISC_SCCAS_CPT_RIN_01 + + function f_TC_ISC_SCCAS_CPT_ACK_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + + // TODO: the UE entity hasReceived200OkOnInitialRequestForDialogWith + + // 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; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy + + // STEP: send invite + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite_contact( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + m_contact_g3gppSrvccAlertingFeature, // TODO: correct use auf g3gppSrvccAlertingFeatureCapabilityIndicator + omit, // template(omit) Require p_require := omit, + vc_route, + omit, + m_messageBody_SDP_mediaOnly + + ) + + ); + f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppMidcallFeature)); + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of f_TC_ISC_SCCAS_CPT_INV_03 + + function f_TC_ISC_SCCAS_CPT_INV_04(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy + + // STEP: send invite + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite_contact( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + m_contact_g3gppDrvccAlertingFeature, // TODO: correct use auf g3gppDrvccAlertingFeature + omit, // template(omit) Require p_require := omit, + vc_route, + m_supported_replaces, + 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy + + // STEP: send invite + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite_contact( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + m_contact_g3gppDrvccOrigPreAlertingFeature, // TODO: correct use auf g3gppDrvccOrigPreAlertingFeature + omit, // template(omit) Require p_require := omit, + vc_route, + m_supported_replaces, + 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 + // Ecpecation: REFER message + tc_ack.start; + alt { + [] SIPP.receive(mw_REFER_Request_stl( + vc_callId, + ?, + ?, + mw_sdpmessageBody)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: REFER message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of f_TC_ISC_SCCAS_PCT_REF_02 + + function f_TC_ISC_SCCAS_PCT_INV_05(in CSeq p_cSeq_s) + runs on ImsComponent { + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_registrationAS(p_cSeq_s); + + // TODO: + // one dialog is early dialog + // and + // a SIP 180 (Ringing) response to the SIP INVITE request has not been received yet in any of the existing dialogs + // and + // the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting feature-capability indicator as in a Feature-Caps header field of SIP 18x responses + // and + // the Contact header field in the initial SIP INVITE request sent by the SC UE towards the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting media feature tag as + // and + // the remote leg is not a precondition enabled dialog + + + // STEp: send invite + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE(m_sccas_invite( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + omit, + vc_route, + m_supported_replaces, + m_messageBody_SDP_mediaOnly + )); + + // TDOD PEarlyMedia indicating value "the last received P-Early-Media header field", + + // TODO: Contact indicating value "set to the Contact header field provided by the served UE at the creation of the dialog", + // TDOD: SDP containing Media indicating value "the media characteristics as received in the SIP INVITE request due to PS to CS STN (including any precondition mechanism specific SDP attributes)"; + f_awaitingUPDATE(mw_UPDATE_Request_ContactChange(vc_callId, vc_contact, mw_contentType_appclication_sdp, ?)); + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + + } // End of f_TC_ISC_SCCAS_PCT_INV_05 + + + function f_TC_ISC_SCCAS_PCT_RES_02(in CSeq p_cSeq_s) + runs on ImsComponent { + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // initial condition: the UE entity isRegisteredTo the IMS + f_registrationAS(p_cSeq_s); + + // STEP: send r_200_ok + f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); + + // Expeted Result: r_1xx_Any + tc_ack.start; + alt { + [] SIPP.receive(mw_Response_1xx_SDPMessage( + vc_callId, + vc_cSeq, + ?, // TODO: EarlyMedia indicating value "the last received P-Early-Media header field", + mw_contentType_appclication_sdp, + mw_sdpmessageBody + )) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: REFER message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } + + + } // End of group Group_9_3 + + group Group_10_3 { + + /** + * @desc Verify that the SCC AS successfully processes an INVITE on a previously established dialog if the SIP INVITE request contains a Replaces header field. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PPT_RIN_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite_replaces( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local), + m_Replaces(vc_callId.callid,{quotedString:=""},{quotedString:=""}) // indicating access transfer procedure + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request_contact(mw_sccas_contact())) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PPT_RIN_01 + + /** + * @desc Verify that the SCC AS successfully processes an UPDATE on an existing early dialog if the SIP INVITE request contains a Replaces header field. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PPT_RIN_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_UPDATE_Request_Base(?)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: UPDATE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PPT_RIN_02 + + /** + * @desc Verify that the SCC AS processes an INVITE if it is unable to associate the SIP INVITE request with a confirmed dialog or on a previously established dialog. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PPT_RIN_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO Replaces indicating value PX_UE_A_SIP_URI; // indicating access transfer procedure + vc_requestUri, + vc_callId, + 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO TargetDialog indicating value PX_UE_MediaLines; // indicating number of media lines in the Target Access Leg is less than the number of media lines in the Source Access Leg + vc_requestUri, + vc_callId, + 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendBYE( + m_BYE_Request_UE( + vc_requestUri, + vc_callId, + 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendBYE( + m_BYE_Request_UE( + vc_requestUri, + vc_callId, + 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersCANCEL(v_cSeq_s); + f_SendCANCEL( + m_CANCEL_Request_Reason_IMS( + vc_requestUri, + vc_callId, + 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine503, + vc_callId, + 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: Respoonse 503 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_PPT_RES_01 + + } // End of group Group_10_3 + + group Group_11_3 { + + /** + * @desc Verify that the SCC AS successfully processes an INVITE that includes an active speech media component using CS bearer. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request_contact(mw_sccas_contact())) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CON_RIN_01 + + /** + * @desc Verify that the SCC AS successfully processes an INVITE due to two STIs on the Target Access Leg. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_02(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request CS -> PS + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request_contact(mw_sccas_contact())) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CON_RIN_02 + + /** + * @desc Verify that the SCC AS rejects an INVITE due missing ability to associate it to an ongoing or different SIP dialog. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CON_RIN_03(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + 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 SCC AS correctly recognizes and initiated for PS to CS access transfer for terminating call in pre-alerting phase using PS to CS SRVCC procedure. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_PCT_INV_06(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_18x_Base( + c_statusLine183, + vc_callId, + 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 the SCC AS handles correctly the procedures for handling of SIP OPTIONS request. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_MED_OPT_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + 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_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_08 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of originating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_09(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + 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: Respoonse 180 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_09 + + /** + * @desc Verify that the SCC AS handles correctly the transfer of terminating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_10(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + 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: Respoonse 183 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_10 + + /** + * @desc Verify that the SCC AS handles correctly additional session transfer initiation. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_11(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( + vc_requestUri, + vc_callId, + 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_11 + + /** + * @desc Verify that the SCC AS handles correctly transfer of session with inactive speech media component. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_12(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendINVITE( + m_sccas_invite( // TODO request active speech media component using CS bearer + vc_requestUri, + vc_callId, + p_cSeq_s, + vc_from, vc_to, vc_via_REG, + vc_contact, + -, -, -, + m_MBody_SDP(vc_sdp_local) + )); + tc_ack.start; + alt { + [] SIPP.receive(mw_INVITE_Request(?,vc_requestUri)) { + tc_ack.stop; + log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_12 + + /** + * @desc Verify that the SCC AS handles correctly transfer of originating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_13(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + 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: Respoonse 180 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_13 + + /** + * @desc Verify that the SCC AS handles correctly transfer of terminating session in alerting phase. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_CPT_INV_14(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + // f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_sendResponse( + m_Response_2xx_Base( + c_statusLine200, + vc_callId, + 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: Respoonse 183 was received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync + } + [] tc_ack.timeout { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + } + } + + f_deregistrationAS(p_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + + } // End of function f_TC_ISC_SCCAS_CPT_INV_14 + + /** + * @desc Verify that the SCC AS correctly behave procedures when the access transfer is completed. + * @param p_cSeq_s Random CSeq REGISTER number + */ + function f_TC_ISC_SCCAS_TER_BYE_01(in CSeq p_cSeq_s) + runs on ImsComponent { + // Local variables + var CSeq v_cSeq_s := p_cSeq_s; + + // Preambule + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + // Registration + f_sendRegistrationAndAwait200Ok( + v_cSeq_s, + m_sccas_register( + vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via_REG, + vc_contact, + m_add_Authorization_digest( + vc_authorization, + {c_Integrity_protected_no} + ), + PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation + PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation + "600000", + -, + m_contentType(c_sdpApplication), // TODO To be refined during validation + m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation + ), + mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) + ); + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync + + // Registration + f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome)); + f_SendBYE( + m_BYE_Request_UE( + vc_requestUri, + vc_callId, + 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_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index c7e6dc9..7eab4f6 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -1,851 +1,858 @@ -/* - * @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 { - } - - group HeaderTemplatesIztok { - template Accept mw_accept( template AcceptBody_List p_acceptParams := *) := { - fieldName := ACCEPT_E, - acceptArgs := p_acceptParams - } - - template RecvInfo mw_recvinfo( template InfoPackage_List p_infoPackage_list ) :={ - fieldName := RECV_INFO_E, - infoPackageList :=p_infoPackage_list - } -} - - group HeaderTemplatesYann { - } - - } // 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 := REPLACES_E, - optionsTags := omit - } - -// template(value) Response m_Response_Dummy := { -// statusLine := c_statusLine100, -// msgHeader := m_msgHeader_dummy, -// messageBody := omit, -// payload := 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 { - } - - 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 - } - 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 (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 - ) modifies m_INVITE_Request_UE := { - msgHeader := { - 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 := * +/* + * @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 { + } + + 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 + } + + } + + group HeaderTemplatesYann { + } + + } // 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 { + } + + 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 + } + 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 (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 + ) modifies m_INVITE_Request_UE := { + msgHeader := { + 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 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 (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 - + + + 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 + } + + } + + 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_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 88714b7..b9f2ddf 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -228,7 +228,7 @@ module AtsSccas_Testcases * @desc Verify that the SCCAS send INVITE for anchored user populated with FeatureCaps header * @param p_cSeq_s Transaction Id */ - testcase TP_ISC_SCCAS_GEN_INV_01(inout CSeq p_cSeq_s) + testcase TC_ISC_SCCAS_GEN_INV_01(inout CSeq p_cSeq_s) runs on ServerSyncComp system TestAdapter { //Variables diff --git a/ttcn/LibSip b/ttcn/LibSip index 7d79616..44122c6 160000 --- a/ttcn/LibSip +++ b/ttcn/LibSip @@ -1 +1 @@ -Subproject commit 7d796164eb9b23fc5d6f06eb0be3be5a3743861d +Subproject commit 44122c6589a3fa7f42825d2475511d08da499ff0 -- GitLab From 72ed8875ecd9cf5cc398ff1e297117b5b5792113 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Fri, 28 Oct 2022 16:17:36 +0200 Subject: [PATCH 184/202] New TC_ISC_SCCAS_SRA_INV_01 added and skeletons of new _SRA_* tests added --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 123 +++++++++++ ttcn/AtsSccas/AtsSccas_Templates.ttcn | 43 ++++ ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 261 ++++++++++++++++++++++++ 3 files changed, 427 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index d5e9b19..4d17b3d 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -2655,6 +2655,129 @@ module AtsSccas_TCFunctions { 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 + + // 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_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 { + + } // 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 { + + } // 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 { + + } // 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 { + + } // 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 { + + } // 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 { + + } // 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 { + + } // 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 { + + } // 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. diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 7eab4f6..1ac0d7d 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -107,6 +107,23 @@ module AtsSccas_Templates } group HeaderTemplatesBostjan { + + + + + template (omit) TargetDialog m_targetDialog (in template CallidString p_callidString) := + { + fieldName := TARGET_DIALOG_E, + callid := p_callidString, + tdParam := omit + } + + template (omit) Require m_require (in template OptionTag_List p_optionTag_List) := + { + fieldName := REQUIRE_E, + optionsTags := p_optionTag_List + } + } group HeaderTemplatesIztok { @@ -307,6 +324,32 @@ module AtsSccas_Templates } 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 + } + + } group request_sent_Iztok { diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index b9f2ddf..208f072 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -1260,6 +1260,267 @@ module AtsSccas_Testcases } // 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. -- GitLab From d083a17f393e7b385218d538932b0bb280129da5 Mon Sep 17 00:00:00 2001 From: juvancic Date: Wed, 2 Nov 2022 14:24:46 +0100 Subject: [PATCH 185/202] added tc function TC ISC_SCCAS_GEN_REF_01 --- ttcn/AtsSccas/AtsSccas_Steps.ttcn | 26 ++++++++++ ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 64 ++++++++++++++++++++++++- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 33 +++++++++++++ ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 32 +++++++++++++ 4 files changed, 154 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn index 6207941..55f9679 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -465,7 +465,33 @@ module AtsSccas_Steps { 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 diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 4d17b3d..fea98fe 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1063,7 +1063,69 @@ module AtsSccas_TCFunctions { } //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( + 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 + } // End of group Group_6A_4 group Group_7_3 { @@ -3022,7 +3084,7 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration - f_IncCSeq(v_cSeq_s); LibSip_Steps.f_setHeadersOPTIONS(v_cSeq_s); + f_IncCSeq(v_cSeq_s); /*LibSip_Steps.*/f_setHeadersOPTIONS(v_cSeq_s); AtsSccas_Steps.f_SendOPTIONS( m_OPTIONS_Request_Base( vc_requestUri, diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 1ac0d7d..3d76b0d 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -141,6 +141,13 @@ module AtsSccas_Templates 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 + } } @@ -473,6 +480,32 @@ module AtsSccas_Templates }, messageBody := p_mb } + + template (omit) 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(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 + } + group response_sent{ template(value) Response m_Response_18XonINVITE_AS_Featurecaps( template(value) StatusLine_18x p_statusLine, diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 208f072..329573a 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -382,7 +382,39 @@ module AtsSccas_Testcases } // 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 + } // End of group Group_6A_4 group Group_7_3 { -- GitLab From 2a4a89b7897d37e11aa764652bb620b79a29315b Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 4 Nov 2022 14:38:38 +0100 Subject: [PATCH 186/202] added tc function TC ISC_SCCAS_GEN_INF_01 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 51 +++++++++++++++++++++++++ ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 39 +++++++++++++++++-- 2 files changed, 86 insertions(+), 4 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index fea98fe..5f12799 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1126,6 +1126,57 @@ module AtsSccas_TCFunctions { }// 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 { diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 329573a..9c66671 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -385,9 +385,9 @@ module AtsSccas_Testcases 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 - */ + * @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 { @@ -414,7 +414,38 @@ module AtsSccas_Testcases } // 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 { -- GitLab From 8e63dbd5d2236e81163b8dbb896f8ea70db20161 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 10 Nov 2022 14:33:57 +0100 Subject: [PATCH 187/202] removed some TODOs --- .../sccas/TP_SCCAS_Chapter_9_3.tplan2 | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 index da1cff7..069b898 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 @@ -94,10 +94,10 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { - the UE entity isRegisteredTo the IMS // TODO + the UE entity isRegisteredTo the IMS } Expected behaviour @@ -112,12 +112,12 @@ Package TP_SCCAS_Chapter_9_3 { Supported indicating value "replaces", PAccessNetworkInfo, Replaces containing // Replaces indicating value (RFC 3891) - call_id indicating value PX_call_id, // TODO PX - from_tag indicating value PX_from_tag, // TODO PX - to_tag indicating value PX_to_tag // TODO PX + 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, // TODO: PX for media only + Media indicating value PX_PSMediaOnly, Version indicating value "0";;;; from the IMS_S_CSCF entity } @@ -133,7 +133,7 @@ Package TP_SCCAS_Chapter_9_3 { ContentLength, MessageBody containing SDP containing - Media indicating value PX_PSMediaOnly, // TODO: PX for media only + Media indicating value PX_PSMediaOnly, Version indicating value "0";;; to the IMS_S_CSCF entity } @@ -162,10 +162,10 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { - the UE entity isRegisteredTo the IMS // TODO + the UE entity isRegisteredTo the IMS } Expected behaviour @@ -180,12 +180,12 @@ Package TP_SCCAS_Chapter_9_3 { Supported indicating value "replaces", PAccessNetworkInfo, Replaces containing // Replaces indicating value (RFC 3891) - call_id indicating value PX_call_id, // TODO PX - from_tag indicating value PX_from_tag, // TODO PX - to_tag indicating value PX_to_tag // TODO PX + 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, // TODO: PX for media only + Media indicating value PX_PSMediaOnly, Version indicating value "0";;;; from the IMS_S_CSCF entity } @@ -201,7 +201,7 @@ Package TP_SCCAS_Chapter_9_3 { ContentLength, MessageBody containing SDP containing - Media indicating value PX_PSMediaOnly, // TODO: PX for media only + Media indicating value PX_PSMediaOnly, Version indicating value "0";;; to the IMS_S_CSCF entity } @@ -227,10 +227,10 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { - the UE entity isRegisteredTo the IMS and // TODO + the UE entity isRegisteredTo the IMS and the UE entity previouslyEstablishedCallWith } @@ -246,12 +246,12 @@ Package TP_SCCAS_Chapter_9_3 { Supported indicating value "replaces", PAccessNetworkInfo, Replaces containing // Replaces indicating value (RFC 3891) - call_id indicating value PX_call_id, // TODO PX - from_tag indicating value PX_from_tag, // TODO PX - to_tag indicating value PX_to_tag // TODO PX + 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, // TODO: PX for media only + Media indicating value PX_PSMediaOnly, Version indicating value "0";;;; from the IMS_S_CSCF entity } @@ -267,7 +267,7 @@ Package TP_SCCAS_Chapter_9_3 { ContentLength, MessageBody containing SDP containing - Media indicating value PX_PSMediaOnly, // TODO: PX for media only + Media indicating value PX_PSMediaOnly, Version indicating value "0";;; to the IMS_S_CSCF entity } @@ -295,7 +295,7 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { the UE entity isRegisteredTo the IMS and @@ -345,7 +345,7 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { the UE entity isRegisteredTo the IMS @@ -377,7 +377,7 @@ Package TP_SCCAS_Chapter_9_3 { g3gppMidcallFeatureCapabilityIndicator;, MessageBody containing SDP containing - Media indicating value PX_PSMediaOnly;;; // TODO: PX for media only + Media indicating value PX_PSMediaOnly;;; to the IMS_S_CSCF entity } @@ -661,7 +661,7 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { the UE entity isRegisteredTo the IMS @@ -1030,7 +1030,7 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { the UE entity isRegisteredTo the IMS @@ -1176,7 +1176,7 @@ Package TP_SCCAS_Chapter_9_3 { // included in the SIP INVITE due to static STI MessageBody containing SDP containing - Media indicating value PX_PSMedia;;; // TODO: PIX for media + Media indicating value PX_PSMedia;;; from the IMS_S_CSCF entity } then { -- GitLab From fdb71f9635beebaa2b423de072cc36ef7938b60b Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Tue, 15 Nov 2022 15:21:49 +0100 Subject: [PATCH 188/202] Add new test cases for group 9.3 --- titan-test-system-framework | 2 +- ttcn/AtsSccas/AtsSccas_PICS.ttcn | 1 - ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 176 +++++++++++++++++++++++- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 39 +++++- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 93 +++++++++++-- 5 files changed, 296 insertions(+), 15 deletions(-) diff --git a/titan-test-system-framework b/titan-test-system-framework index a49d8da..a24f374 160000 --- a/titan-test-system-framework +++ b/titan-test-system-framework @@ -1 +1 @@ -Subproject commit a49d8daee3e5df27198a1902a7c630a84351e427 +Subproject commit a24f37489fd2fb50bfcd3a35b3e8e094a9c2bf6a diff --git a/ttcn/AtsSccas/AtsSccas_PICS.ttcn b/ttcn/AtsSccas/AtsSccas_PICS.ttcn index 2ee1bc8..7d68ae2 100644 --- a/ttcn/AtsSccas/AtsSccas_PICS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PICS.ttcn @@ -67,7 +67,6 @@ PICS used for test case selection * @see ETSI TS 103 833-1 A.3/2.2 */ modulepar boolean PICS_SCCAS_REJECTION_OF_MALICIOUS_REFER := false; - //TODO add check of PICS_SCCAS_REJECTION_OF_MALICIOUS_REFER in TP_ISC_SCCAS_GEN_REF_01 //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 diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 4d17b3d..215df72 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1761,7 +1761,7 @@ module AtsSccas_TCFunctions { // template(value) SipUrl p_requestUri, // template(value) SipUrl p_referredBy, // template(value) MessageBody p_messageBody - // Ecpecation: REFER message + // Expectation: REFER message tc_ack.start; alt { [] SIPP.receive(mw_REFER_Request_stl( @@ -1783,6 +1783,124 @@ module AtsSccas_TCFunctions { } // 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 { + + // 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 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_INV_05(in CSeq p_cSeq_s) runs on ImsComponent { @@ -1822,10 +1940,10 @@ module AtsSccas_TCFunctions { m_messageBody_SDP_mediaOnly )); - // TDOD PEarlyMedia indicating value "the last received P-Early-Media header field", + // TODO PEarlyMedia indicating value "the last received P-Early-Media header field", // TODO: Contact indicating value "set to the Contact header field provided by the served UE at the creation of the dialog", - // TDOD: SDP containing Media indicating value "the media characteristics as received in the SIP INVITE request due to PS to CS STN (including any precondition mechanism specific SDP attributes)"; + // TODO: 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); @@ -1834,6 +1952,58 @@ module AtsSccas_TCFunctions { } // 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 { diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 1ac0d7d..09e8b77 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -111,14 +111,14 @@ module AtsSccas_Templates - template (omit) TargetDialog m_targetDialog (in template CallidString p_callidString) := + 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 OptionTag_List p_optionTag_List) := + template (omit) Require m_require (in template (omit) OptionTag_List p_optionTag_List := omit) := { fieldName := REQUIRE_E, optionsTags := p_optionTag_List @@ -495,6 +495,30 @@ module AtsSccas_Templates } 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( @@ -872,6 +896,17 @@ module AtsSccas_Templates 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( diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 208f072..69c1d8e 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -751,11 +751,24 @@ module AtsSccas_Testcases runs on ServerSyncComp system TestAdapter { - // TODO - - - + 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 @@ -798,7 +811,23 @@ module AtsSccas_Testcases runs on ServerSyncComp system TestAdapter { - // TODO + 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 @@ -807,7 +836,23 @@ module AtsSccas_Testcases runs on ServerSyncComp system TestAdapter { - // TODO + 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 @@ -815,7 +860,23 @@ module AtsSccas_Testcases runs on ServerSyncComp system TestAdapter { - // TODO + 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 @@ -823,7 +884,23 @@ module AtsSccas_Testcases runs on ServerSyncComp system TestAdapter { - // TODO + 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 -- GitLab From ef71a2ed0c3eec766145226846eab575f97eac53 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Tue, 15 Nov 2022 15:43:49 +0100 Subject: [PATCH 189/202] Compilation errors fixed --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 4 ++-- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index aee7d91..36b3e0c 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1085,7 +1085,7 @@ module AtsSccas_TCFunctions { 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( + m_sccas_refer_wo_contact( vc_requestUri, vc_callId, p_cSeq_s, @@ -3305,7 +3305,7 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration - f_IncCSeq(v_cSeq_s); /*LibSip_Steps.*/f_setHeadersOPTIONS(v_cSeq_s); + f_IncCSeq(v_cSeq_s); LibSip_Steps.f_setHeadersOPTIONS(v_cSeq_s); AtsSccas_Steps.f_SendOPTIONS( m_OPTIONS_Request_Base( vc_requestUri, diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index c36741d..fb811ba 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -481,7 +481,7 @@ module AtsSccas_Templates messageBody := p_mb } - template (omit) REFER_Request m_sccas_refer( + 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, @@ -504,7 +504,7 @@ module AtsSccas_Templates contentType := m_contentType(c_sdpApplication) }, messageBody := p_mb - } + } group response_sent{ template(value) Response m_Response_18XonINVITE_AS_Featurecaps( -- GitLab From 586c90401368037768aa0557aba05395e166cfe3 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Wed, 16 Nov 2022 15:27:27 +0100 Subject: [PATCH 190/202] Add new test cases for group 12.3 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 20 +++++++++++--------- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 18 ++++++++++++++++-- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 36b3e0c..7bb1733 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -2712,7 +2712,7 @@ module AtsSccas_TCFunctions { alt { [] SIPP.receive(mw_Response_Base(c_statusLine503, vc_callId, v_cSeq_s)) { tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 503 was received ***"); + log("*** " & __SCOPE__ & ": PASS: Response 503 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { @@ -3522,7 +3522,7 @@ module AtsSccas_TCFunctions { alt { [] SIPP.receive(mw_Response_Base(c_statusLine180, vc_callId, v_cSeq_s)) { tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); + log("*** " & __SCOPE__ & ": PASS: Response 180 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { @@ -3577,8 +3577,8 @@ module AtsSccas_TCFunctions { // 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, + m_Response_18x_Base( + c_statusLine183, vc_callId, v_cSeq_s, vc_from, @@ -3589,7 +3589,7 @@ module AtsSccas_TCFunctions { alt { [] SIPP.receive(mw_Response_Base(c_statusLine183, vc_callId, v_cSeq_s)) { tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); + log("*** " & __SCOPE__ & ": PASS: Response 183 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { @@ -3651,7 +3651,8 @@ module AtsSccas_TCFunctions { vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, - m_MBody_SDP(vc_sdp_local) + m_MBody_SDP(vc_sdp_local), + m_accept("application/vnd.3gpp.mid-call+xml") )); tc_ack.start; alt { @@ -3719,7 +3720,8 @@ module AtsSccas_TCFunctions { vc_from, vc_to, vc_via_REG, vc_contact, -, -, -, - m_MBody_SDP(vc_sdp_local) + m_MBody_SDP(vc_sdp_local), + m_accept("application/vnd.3gpp.mid-call+xml") )); tc_ack.start; alt { @@ -3792,7 +3794,7 @@ module AtsSccas_TCFunctions { alt { [] SIPP.receive(mw_Response_Base(c_statusLine180, vc_callId, v_cSeq_s)) { tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 180 was received ***"); + log("*** " & __SCOPE__ & ": PASS: Response 180 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { @@ -3859,7 +3861,7 @@ module AtsSccas_TCFunctions { alt { [] SIPP.receive(mw_Response_Base(c_statusLine183, vc_callId, v_cSeq_s)) { tc_ack.stop; - log("*** " & __SCOPE__ & ": PASS: Respoonse 183 was received ***"); + log("*** " & __SCOPE__ & ": PASS: Response 183 was received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync } [] tc_ack.timeout { diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index fb811ba..3bf37c6 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -152,6 +152,18 @@ module AtsSccas_Templates } 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 @@ -565,11 +577,13 @@ module AtsSccas_Templates 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 (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) + contentType := m_contentType(c_sdpApplication) }, messageBody := p_mb } -- GitLab From fc107aeb1bd76969f6cdaa9618ab62007925a08b Mon Sep 17 00:00:00 2001 From: Bostjan Date: Thu, 17 Nov 2022 12:52:59 +0100 Subject: [PATCH 191/202] New TC_ISC_SCCAS_SRA_INV_02 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 242 ++++++++++++++++++++++++ ttcn/AtsSccas/AtsSccas_Templates.ttcn | 22 +++ 2 files changed, 264 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 4d17b3d..2797206 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -2713,6 +2713,75 @@ module AtsSccas_TCFunctions { */ 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 + + // 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_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 @@ -2722,6 +2791,75 @@ module AtsSccas_TCFunctions { */ 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 + + // 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_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 @@ -2731,6 +2869,91 @@ module AtsSccas_TCFunctions { */ 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 @@ -2740,6 +2963,25 @@ module AtsSccas_TCFunctions { */ 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 + + //?? send INVITE + + //?? do not receive BYE + + + f_deregistrationAS(v_cSeq_s); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync + } // End of function f_TC_ISC_SCCAS_SRA_BYE_01 diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 1ac0d7d..2d4fdf8 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -348,6 +348,28 @@ module AtsSccas_Templates }, 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 + } } -- GitLab From 37ec635907842ee90b73836d93b105ee73b83146 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Thu, 17 Nov 2022 13:02:39 +0100 Subject: [PATCH 192/202] Error resolved --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index abd7d35..0ac8bfd 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -3547,7 +3547,8 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync // Registration - f_IncCSeq(v_cSeq_s); LibSip_Steps.f_setHeadersOPTIONS(v_cSeq_s); + f_IncCSeq(v_cSeq_s); + f_setHeadersOPTIONS(v_cSeq_s); AtsSccas_Steps.f_SendOPTIONS( m_OPTIONS_Request_Base( vc_requestUri, -- GitLab From 4e5fd92e8f70c29b47d4361d213083d3f6c7b0c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Thu, 17 Nov 2022 17:01:12 +0100 Subject: [PATCH 193/202] removed remaining TODOs --- .../sccas/TP_SCCAS_Chapter_9_3.tplan2 | 70 ++++++++----------- 1 file changed, 31 insertions(+), 39 deletions(-) diff --git a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 index 069b898..8d0fa47 100644 --- a/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 +++ b/test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 @@ -349,7 +349,7 @@ Package TP_SCCAS_Chapter_9_3 { Initial conditions with { the UE entity isRegisteredTo the IMS - // TODO: SCC AS supports the MSC Server assisted mid-call feature according to operator policy + // SCC AS supports the MSC Server assisted mid-call feature according to operator policy } Expected behaviour @@ -416,7 +416,7 @@ Package TP_SCCAS_Chapter_9_3 { Initial conditions with { the UE entity isRegisteredTo the IMS - // TODO: SCC AS supports the MSC Server g.3gpp.drvcc-alerting feature + // SCC AS supports the MSC Server g.3gpp.drvcc-alerting feature } Expected behaviour @@ -501,7 +501,6 @@ Package TP_SCCAS_Chapter_9_3 { Initial conditions with { the UE entity isRegisteredTo the IMS - // TODO: // 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; @@ -574,7 +573,7 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { the UE entity isRegisteredTo the IMS @@ -727,11 +726,11 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { the UE entity isRegisteredTo the IMS - // TODO: initial condition SIP INVITE request to PS to CS STN + // 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" @@ -764,8 +763,7 @@ Package TP_SCCAS_Chapter_9_3 { Expected behaviour ensure that { - when { - // TODO: Trigger unclear for this refer + when { the IUT entity receives an ACK from the IMS_S_CSCF entity @@ -780,14 +778,14 @@ Package TP_SCCAS_Chapter_9_3 { 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 "TODO: 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; + 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 - TODO indicating value ""; + 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 @@ -834,11 +832,11 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { - the UE entity isRegisteredTo the IMS - // TODO: + 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 @@ -865,14 +863,14 @@ Package TP_SCCAS_Chapter_9_3 { 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 "TODO: 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; + 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 - TODO indicating value ""; + 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 @@ -905,11 +903,11 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { - the UE entity isRegisteredTo the IMS - // TODO: + 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 @@ -941,7 +939,7 @@ Package TP_SCCAS_Chapter_9_3 { 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 // 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]. + 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"; ; @@ -981,12 +979,12 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { the UE entity isRegisteredTo the IMS - // TODO // source access leg is an ongoing session containing only an active or inactive media component + // transfer of a session is successfully completed } @@ -994,7 +992,6 @@ Package TP_SCCAS_Chapter_9_3 { ensure that { when { the IUT entity receives an ACK - // TODO: trigger for event unclear, transfer of a session is successfully completed from the IMS_S_CSCF entity } then { @@ -1034,16 +1031,14 @@ Package TP_SCCAS_Chapter_9_3 { Initial conditions with { the UE entity isRegisteredTo the IMS - // TODO: session is dialog in an early dialog phase on the originating side + // 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 - - // TODO: trigger for event unclear, transfer of a session is successfully completed - + the IUT entity receives an ACK from the IMS_S_CSCF entity } then { @@ -1078,11 +1073,10 @@ Package TP_SCCAS_Chapter_9_3 { Config Id CFG_SCCAS_01 - PICS Selection NONE // TODO + PICS Selection NONE Initial conditions with { the UE entity isRegisteredTo the IMS - // TODO: // transfer of a session is successfully completed // and // the source access leg contains media components other than speech media component @@ -1091,10 +1085,7 @@ Package TP_SCCAS_Chapter_9_3 { Expected behaviour ensure that { when { - the IUT entity receives an ACK - - // TODO: trigger for event unclear, transfer of a session is successfully completed - + the IUT entity receives an ACK from the IMS_S_CSCF entity } then { @@ -1108,7 +1099,7 @@ Package TP_SCCAS_Chapter_9_3 { ContentLength, MessageBody containing SDP containing - Media indicating value "TODO: the source access leg contains media components other than speech media component";;; + Media indicating value "the source access leg contains media components other than speech media component";;; to the IMS_S_CSCF entity } } @@ -1190,7 +1181,7 @@ Package TP_SCCAS_Chapter_9_3 { ContentType indicating value "application/sdp", MessageBody containing // 3) a new SDP offer, including: SDP containing - Media indicating value PX_PSMedia; // TODO: PIX for media, media characteristics as received in the SIP INVITE request + Media indicating value PX_PSMedia; ; ; to the IMS_S_CSCF entity @@ -1233,8 +1224,9 @@ Package TP_SCCAS_Chapter_9_3 { Initial conditions with { the UE entity isRegisteredTo the IMS and - the IUT entity hasAchievedInitialINVITE // TODO: INVITE contains: g3gppDrvccAlerting - // SCC AS supports CS to PS dual radio access transfer for calls in alerting phase + the IUT entity hasAchievedInitialINVITE + // INVITE contains: g3gppDrvccAlerting + // SCC AS supports CS to PS dual radio access transfer for calls in alerting phase } Expected behaviour @@ -1254,7 +1246,7 @@ Package TP_SCCAS_Chapter_9_3 { ContentType indicating value "application/sdp", MessageBody containing // 3) a new SDP offer, including: SDP containing - Media indicating value PX_PSMedia; // TODO: PIX for media, media characteristics as received in the SIP INVITE request + Media indicating value PX_PSMedia; ; ; to the IMS_S_CSCF entity @@ -1356,7 +1348,7 @@ Package TP_SCCAS_Chapter_9_3 { 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 - TODO indicating value "";;; + 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 -- GitLab From 07fdb6b678ae46e538f25532771bfc4f2254695c Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 18 Nov 2022 11:40:55 +0100 Subject: [PATCH 194/202] added tc function --- ttcn/AtsSccas/AtsSccas_Steps.ttcn | 28 +++++++ ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 100 +++++++++++++++++++++++- ttcn/AtsSccas/AtsSccas_Templates.ttcn | 37 ++++++++- 3 files changed, 161 insertions(+), 4 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn index 55f9679..d3cea0a 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -515,6 +515,29 @@ module AtsSccas_Steps { 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 @@ -680,6 +703,11 @@ module AtsSccas_Steps { 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 diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 0ac8bfd..12c09b9 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -3256,12 +3256,48 @@ module AtsSccas_TCFunctions { 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)); - //?? send INVITE - - //?? do not receive BYE + 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 @@ -3274,6 +3310,64 @@ module AtsSccas_TCFunctions { */ 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_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + 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 diff --git a/ttcn/AtsSccas/AtsSccas_Templates.ttcn b/ttcn/AtsSccas/AtsSccas_Templates.ttcn index 10addec..a390f58 100644 --- a/ttcn/AtsSccas/AtsSccas_Templates.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Templates.ttcn @@ -539,7 +539,42 @@ module AtsSccas_Templates }, 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, -- GitLab From b1898e4aa56f8434745c291220ecf53127f8df34 Mon Sep 17 00:00:00 2001 From: juvancic Date: Fri, 18 Nov 2022 11:48:56 +0100 Subject: [PATCH 195/202] added tc function TC ISC_SCCAS_SRA_BYE_03 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 60 ++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 12c09b9..b17fa10 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -3346,7 +3346,7 @@ module AtsSccas_TCFunctions { alt { [] SIPP.receive(mw_BYE_Request_Base(vc_callId)) { log("*** " & __SCOPE__ & ": PASS: BYE message was received ***"); - //f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync + f_sendResponse( m_Response_2xx_Base( c_statusLine200, @@ -3377,6 +3377,64 @@ module AtsSccas_TCFunctions { */ 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 -- GitLab From 1e6fc7dff63b3923042f11cfe45f328ab621bbc4 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Fri, 18 Nov 2022 13:41:44 +0100 Subject: [PATCH 196/202] PIXITs updated --- ttcn/AtsSccas/AtsSccas_PIXITS.ttcn | 134 ++++++++++-------- ttcn/AtsSccas/AtsSccas_Steps.ttcn | 78 +++------- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 10 +- .../AtsSccas_TCFunctions_TS124292.ttcn | 12 +- 4 files changed, 101 insertions(+), 133 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn index 1a8d662..024c9cd 100644 --- a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn @@ -13,71 +13,79 @@ module AtsSccas_PIXITS { modulepar { - /** @desc boolean for SUT working mode due to - */ - boolean PX_SCCAS__ := true; +// /** @desc boolean for SUT working mode due to +// */ +// boolean PX_SCCAS__ := true; - charstring PX_ACTF_MGMT_URI := ""; + /** @desc charstring for ATCF management URI in Contact header field + */ + charstring PX_ATCF_MGMT_URI := ""; - charstring PX_ACTF_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 { - // TODO - SUT_UE1 PIXITS to be removed - group SUT_UE1 { - /** @desc charstring for SUT - PCSCF1 IP address to exchange SIP messages - connection point for UE1 - */ - modulepar charstring PX_IMS_SUT_PCSCF1_IPADDR := "10.100.0.6"; - - /** @desc integer for SUT - PCSCF1 port number to exchange SIP messages - connection point for UE1 - */ - modulepar integer PX_IMS_SUT_PCSCF1_PORT := 5060; - - /** @desc charstring for SUT/PCSCF1 domain - connection point for UE1 - */ - modulepar charstring PX_IMS_SUT_PCSCF1_HOME_DOMAIN := "plugtests.net"; - - /** @desc charstring for IP address used by the TS to exchange media streams for UE1 - */ - modulepar charstring PX_IMS_SUT_UE1_BEARER_IPADDR := "conftest.plugtests.net"; - - /** @desc charstring for identity of the tester UE1 local domain - */ - modulepar charstring PX_IMS_SUT_UE1_HOME_DOMAIN := "plugtests.net"; - - /** @desc charstring for identity of the tester UE1 local user - */ - modulepar charstring PX_IMS_SUT_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_SUT_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_SUT_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_SUT_UE1_QOP := "auth"; - - /** @desc charstring for home(SUT) REGISTRAR domain of UE1 - */ - modulepar charstring PX_IMS_SUT_UE1_REGISTRAR := "registrar.sut.net"; - - /** @desc charstring for UE1 display name - */ - modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "alice-05@plugtest.net"; - } // End of group SUT_UE1 +// // TODO - SUT_UE1 PIXITS to be removed +// group SUT_UE1 { +// /** @desc charstring for SUT - PCSCF1 IP address to exchange SIP messages - connection point for UE1 +// */ +// modulepar charstring PX_IMS_SUT_PCSCF1_IPADDR := "10.100.0.6"; +// +// /** @desc integer for SUT - PCSCF1 port number to exchange SIP messages - connection point for UE1 +// */ +// modulepar integer PX_IMS_SUT_PCSCF1_PORT := 5060; +// +// /** @desc charstring for SUT/PCSCF1 domain - connection point for UE1 +// */ +// modulepar charstring PX_IMS_SUT_PCSCF1_HOME_DOMAIN := "plugtests.net"; +// +// /** @desc charstring for IP address used by the TS to exchange media streams for UE1 +// */ +// modulepar charstring PX_IMS_SUT_UE1_BEARER_IPADDR := "conftest.plugtests.net"; +// +// /** @desc charstring for identity of the tester UE1 local domain +// */ +// modulepar charstring PX_IMS_SUT_UE1_HOME_DOMAIN := "plugtests.net"; +// +// /** @desc charstring for identity of the tester UE1 local user +// */ +// modulepar charstring PX_IMS_SUT_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_SUT_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_SUT_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_SUT_UE1_QOP := "auth"; +// +// /** @desc charstring for home(SUT) REGISTRAR domain of UE1 +// */ +// modulepar charstring PX_IMS_SUT_UE1_REGISTRAR := "registrar.sut.net"; +// +// /** @desc charstring for UE1 display name +// */ +// modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "alice-05@plugtest.net"; +// } // End of group SUT_UE1 // TODO - SUT_SCSCF PIXITS to be removed when will be replaced in ATS code with TS SCSCF group SUT_SCSCF { @@ -88,14 +96,14 @@ module AtsSccas_PIXITS { /** @desc integer for SUT/S-CSCF port number to exchange SIP messages */ modulepar integer PX_IMS_SUT_SCSCF_PORT := 5060; - - /** @desc charstring for SUT/S-CSCFdomain - */ - modulepar charstring PX_IMS_SUT_SCSCF_HOME_DOMAIN := "scscf.sut.net"; - - /** @desc charstring for SUT/S-CSCF globally used realm name of IUT S-CSCF - */ - modulepar charstring PX_IMS_SUT_SCSCF_REALM := "realm.scscf"; +// +// /** @desc charstring for SUT/S-CSCFdomain +// */ +// modulepar charstring PX_IMS_SUT_SCSCF_HOME_DOMAIN := "scscf.sut.net"; +// +// /** @desc charstring for SUT/S-CSCF globally used realm name of IUT S-CSCF +// */ +// modulepar charstring PX_IMS_SUT_SCSCF_REALM := "realm.scscf"; } // End of group SUT_SCSCF //used for AS, TAS, SCC-AS @@ -127,7 +135,7 @@ module AtsSccas_PIXITS { */ modulepar integer PX_IMS_TS_UE1_PORT := 5060; - /** @desc charstring for home(TS) REGISTRAR domain + /** @desc charstring for home(TS) REGISTRAR domain for UE1 */ modulepar charstring PX_IMS_TS_UE1_REGISTRAR := "registrar.domain.net"; diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn index 55f9679..b6898f4 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -115,7 +115,7 @@ module AtsSccas_Steps { vc_userprofile ) ); - vc_sdp_local.origin.user_name := PX_IMS_SUT_UE1_PUBLIC_USER; + 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"; @@ -168,13 +168,13 @@ module AtsSccas_Steps { 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_SUT_UE1_BEARER_IPADDR; - vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; - vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; - vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; - vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; - vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; - vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; + 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) @@ -198,13 +198,13 @@ module AtsSccas_Steps { 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_SUT_UE1_BEARER_IPADDR; - vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; - vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; - vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; - vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; - vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; - vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; + 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 @@ -264,8 +264,8 @@ module AtsSccas_Steps { select(p_user) { case (c_userProfile_UE1atSUThome) { - p_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE1_PUBLIC_USER, password:=omit}; - p_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE1_HOME_DOMAIN, portField :=omit} + 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}; @@ -276,8 +276,8 @@ module AtsSccas_Steps { // 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_SUT_UE1_PUBLIC_USER, password := omit}; - p_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_UE1_HOME_DOMAIN, portField :=omit} + 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 @@ -334,46 +334,6 @@ module AtsSccas_Steps { vc_sent_label := { host := PX_IMS_SUT_AS_IPADDR, portField := PX_IMS_SUT_AS_PORT }; select(p_interface){ -// case (c_interfaceProfile_IMS_SUT_IBCF1) { //variant c_interfaceProfile_IMS_SUT_IBCF1 -// vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF1_PORT; -// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF1_IPADDR; -// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF1_HOME_DOMAIN; -// } -// case (c_interfaceProfile_IMS_SUT_IBCF2) { //variant c_interfaceProfile_IMS_SUT_IBCF2 -// vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF2_PORT; -// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF2_IPADDR; -// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF2_HOME_DOMAIN; -// } -// case (c_interfaceProfile_IMS_SUT_PCSCF1) { //variant c_interfaceProfile_IMS_SUT_PCSCF1 -// vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF1_PORT; -// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF1_IPADDR; -// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF1_HOME_DOMAIN; -// } -// case (c_interfaceProfile_IMS_SUT_PCSCF2) { //variant c_interfaceProfile_IMS_SUT_PCSCF2 -// vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF2_PORT; -// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF2_IPADDR; -// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF2_HOME_DOMAIN; -// } -// case (c_interfaceProfile_IMS_SUT_PCSCF) { //variant c_interfaceProfile_IMS_SUT_PCSCF -// vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF_PORT; -// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF_IPADDR; -// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF_HOME_DOMAIN; -// } -// case (c_interfaceProfile_IMS_SUT_SCSCF) { //variant c_interfaceProfile_IMS_SUT_SCSCF -// vc_interfaceprofile.SUTPort := PX_IMS_SUT_SCSCF_PORT; -// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_SCSCF_IPADDR; -// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_SCSCF_HOME_DOMAIN; -// } -// case (c_interfaceProfile_IMS_SUT_ICSCF) { //variant c_interfaceProfile_IMS_SUT_ICSCF -// vc_interfaceprofile.SUTPort := PX_IMS_SUT_ICSCF_PORT; -// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_ICSCF_IPADDR; -// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_ICSCF_HOME_DOMAIN; -// } -// case (c_interfaceProfile_IMS_SUT_MGCF) { //variant c_interfaceProfile_IMS_SUT_MGCF -// vc_interfaceprofile.SUTPort := PX_IMS_SUT_IMGCF_PORT; -// vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IMGCF_IPADDR; -// vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IMGCF_HOME_DOMAIN; -// } //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; diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 0ac8bfd..d6407d1 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -343,7 +343,7 @@ module AtsSccas_TCFunctions { m_fcValue( "g-3gpp-atcf-mgmt-uri-in-path", { - {"sip-uri", { tokenOrHost := PX_ACTF_MGMT_URI }} + {"sip-uri", { tokenOrHost := PX_ATCF_MGMT_URI }} }) }), omit, @@ -471,11 +471,11 @@ module AtsSccas_TCFunctions { v_contact.contactBody.contactAddresses[0].contactParams := { // TODO To be refined during validation { "g.3gpp.atcf-mgmt-uri", - {tokenOrHost := PX_ACTF_MGMT_URI} + {tokenOrHost := PX_ATCF_MGMT_URI} }, { "g.3gpp.path", - {tokenOrHost := PX_ACTF_URI} + {tokenOrHost := PX_ATCF_URI} } }; f_SendREGISTER( @@ -499,7 +499,7 @@ module AtsSccas_TCFunctions { m_fcValue( "g-3gpp-atcf-mgmt-uri\", { - {"sip-uri", { tokenOrHost := PX_ACTF_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 @@ -588,7 +588,7 @@ module AtsSccas_TCFunctions { m_fcValue( "g-3gpp-atcf-mgmt-uri-in-path", { - {"sip-uri", { tokenOrHost := PX_ACTF_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 diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn index e99fa18..e061811 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions_TS124292.ttcn @@ -53,7 +53,7 @@ module AtsSccas_TCFunctions_TS124292 { f_awaitingRegistration_IMS( v_cSeq_s, valueof(m_SipUrl_currDomain(vc_userprofile)), - PX_IMS_SUT_UE1_QOP, + PX_IMS_TS_UE1_QOP, mw_sccas_register( -, mw_pChargingVector(-, *), // TODO To be refined during validation - Clause 6.3.2 Initial registration Point 11 @@ -62,8 +62,8 @@ module AtsSccas_TCFunctions_TS124292 { mw_Authorization_digest( // Clause 6.3.2 Initial registration Point 4 mw_digestResponse( ( - {"username", {tokenOrHost := PX_IMS_SUT_UE1_PRIVAT_USERNAME}}, - {"realm", {tokenOrHost := PX_IMS_SUT_UE1_PUBLIC_USER}}, + {"username", {tokenOrHost := PX_IMS_TS_UE1_PRIVAT_USERNAME}}, + {"realm", {tokenOrHost := PX_IMS_TS_UE1_PUBLIC_USER}}, {"integrity-protected", {tokenOrHost := "auth-done"}}, {"nonce", {tokenOrHost := ""}} )) @@ -102,7 +102,7 @@ module AtsSccas_TCFunctions_TS124292 { f_awaitingRegistration_IMS( v_cSeq_s, valueof(m_SipUrl_currDomain(vc_userprofile)), - PX_IMS_SUT_UE1_QOP, + PX_IMS_TS_UE1_QOP, mw_sccas_register( -, mw_pChargingVector(-, *), // TODO To be refined during validation - Clause 6.3.2 Initial registration Point 11 @@ -111,8 +111,8 @@ module AtsSccas_TCFunctions_TS124292 { mw_Authorization_digest( // Clause 6.3.2 Initial registration Point 4 mw_digestResponse( ( - {"username", {tokenOrHost := PX_IMS_SUT_UE1_PRIVAT_USERNAME}}, - {"realm", {tokenOrHost := PX_IMS_SUT_UE1_PUBLIC_USER}}, + {"username", {tokenOrHost := PX_IMS_TS_UE1_PRIVAT_USERNAME}}, + {"realm", {tokenOrHost := PX_IMS_TS_UE1_PUBLIC_USER}}, {"integrity-protected", {tokenOrHost := "auth-done"}}, {"nonce", {tokenOrHost := ""}} )) -- GitLab From f6e588956e0b9815bb9527b2f6786274d822a528 Mon Sep 17 00:00:00 2001 From: Bostjan Date: Fri, 18 Nov 2022 14:09:04 +0100 Subject: [PATCH 197/202] PIXITS PX_IMS_SUT_SCSCF* changed into PX_IMS_TS_SCSCF* --- ttcn/AtsSccas/AtsSccas_PIXITS.ttcn | 69 ------------ ttcn/AtsSccas/AtsSccas_Steps.ttcn | 4 +- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 144 ++++++++++++------------ 3 files changed, 74 insertions(+), 143 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn index 024c9cd..c41ff9e 100644 --- a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn @@ -37,75 +37,6 @@ module AtsSccas_PIXITS { group SUT { -// // TODO - SUT_UE1 PIXITS to be removed -// group SUT_UE1 { -// /** @desc charstring for SUT - PCSCF1 IP address to exchange SIP messages - connection point for UE1 -// */ -// modulepar charstring PX_IMS_SUT_PCSCF1_IPADDR := "10.100.0.6"; -// -// /** @desc integer for SUT - PCSCF1 port number to exchange SIP messages - connection point for UE1 -// */ -// modulepar integer PX_IMS_SUT_PCSCF1_PORT := 5060; -// -// /** @desc charstring for SUT/PCSCF1 domain - connection point for UE1 -// */ -// modulepar charstring PX_IMS_SUT_PCSCF1_HOME_DOMAIN := "plugtests.net"; -// -// /** @desc charstring for IP address used by the TS to exchange media streams for UE1 -// */ -// modulepar charstring PX_IMS_SUT_UE1_BEARER_IPADDR := "conftest.plugtests.net"; -// -// /** @desc charstring for identity of the tester UE1 local domain -// */ -// modulepar charstring PX_IMS_SUT_UE1_HOME_DOMAIN := "plugtests.net"; -// -// /** @desc charstring for identity of the tester UE1 local user -// */ -// modulepar charstring PX_IMS_SUT_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_SUT_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_SUT_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_SUT_UE1_QOP := "auth"; -// -// /** @desc charstring for home(SUT) REGISTRAR domain of UE1 -// */ -// modulepar charstring PX_IMS_SUT_UE1_REGISTRAR := "registrar.sut.net"; -// -// /** @desc charstring for UE1 display name -// */ -// modulepar charstring PX_IMS_SUT_UE1_DISPLAY := "alice-05@plugtest.net"; -// } // End of group SUT_UE1 - - // TODO - SUT_SCSCF PIXITS to be removed when will be replaced in ATS code with TS SCSCF - group SUT_SCSCF { - /** @desc charstring for SUT/S-CSCF IP address to exchange SIP messages - */ - modulepar charstring PX_IMS_SUT_SCSCF_IPADDR := "172.31.10.4"; - - /** @desc integer for SUT/S-CSCF port number to exchange SIP messages - */ - modulepar integer PX_IMS_SUT_SCSCF_PORT := 5060; -// -// /** @desc charstring for SUT/S-CSCFdomain -// */ -// modulepar charstring PX_IMS_SUT_SCSCF_HOME_DOMAIN := "scscf.sut.net"; -// -// /** @desc charstring for SUT/S-CSCF globally used realm name of IUT S-CSCF -// */ -// modulepar charstring PX_IMS_SUT_SCSCF_REALM := "realm.scscf"; - } // End of group SUT_SCSCF - //used for AS, TAS, SCC-AS group SUT_AS { /** @desc charstring for SUT - AS IP address to exchange SIP messages - connection point for SCSCF diff --git a/ttcn/AtsSccas/AtsSccas_Steps.ttcn b/ttcn/AtsSccas/AtsSccas_Steps.ttcn index de27816..d2446c9 100644 --- a/ttcn/AtsSccas/AtsSccas_Steps.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Steps.ttcn @@ -561,8 +561,8 @@ module AtsSccas_Steps { 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 + 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, diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index bb12683..4376f2e 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -74,8 +74,8 @@ module AtsSccas_TCFunctions { 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 + 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, @@ -214,8 +214,8 @@ module AtsSccas_TCFunctions { 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 + 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, @@ -335,8 +335,8 @@ module AtsSccas_TCFunctions { 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 + 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 { @@ -491,8 +491,8 @@ module AtsSccas_TCFunctions { 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 + 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 { @@ -580,8 +580,8 @@ module AtsSccas_TCFunctions { 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 + 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 { @@ -695,8 +695,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -1448,8 +1448,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -1508,8 +1508,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -1583,8 +1583,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -1633,8 +1633,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -1696,8 +1696,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -1760,8 +1760,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -2189,8 +2189,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -2258,8 +2258,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -2326,8 +2326,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -2394,8 +2394,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -2462,8 +2462,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -2540,8 +2540,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -2618,8 +2618,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -2685,8 +2685,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -2757,8 +2757,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -2825,8 +2825,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -2893,8 +2893,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -3484,8 +3484,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -3552,8 +3552,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -3620,8 +3620,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -3687,8 +3687,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -3755,8 +3755,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -3823,8 +3823,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -3891,8 +3891,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -3958,8 +3958,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -4025,8 +4025,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -4094,8 +4094,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -4163,8 +4163,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -4230,8 +4230,8 @@ module AtsSccas_TCFunctions { 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 + 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 @@ -4297,8 +4297,8 @@ module AtsSccas_TCFunctions { 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 + 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 -- GitLab From 008513357fcf5774574306443e998f10befdfa6e Mon Sep 17 00:00:00 2001 From: Bostjan Date: Mon, 21 Nov 2022 15:15:53 +0100 Subject: [PATCH 198/202] TPs *SRA_CAN_01 and 02 added --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 138 +++++++++++++++++++++++- 1 file changed, 135 insertions(+), 3 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 4376f2e..73e9018 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -2952,7 +2952,7 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - // Registration + // 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( @@ -3004,7 +3004,7 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - // Registration + // 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( @@ -3082,7 +3082,7 @@ module AtsSccas_TCFunctions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync - // Registration + // 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( @@ -3444,6 +3444,75 @@ module AtsSccas_TCFunctions { */ 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 @@ -3453,6 +3522,69 @@ module AtsSccas_TCFunctions { */ 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 -- GitLab From 428846643ac1cffaa26abd46839b28028d4cc509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20L=C3=BCdtke?= Date: Tue, 22 Nov 2022 11:59:30 +0100 Subject: [PATCH 199/202] updating and correcting TCs in section 9.3 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 212 +++++++++++++++++++----- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 44 ++++- 2 files changed, 207 insertions(+), 49 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 73e9018..4330fcc 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -1398,7 +1398,15 @@ module AtsSccas_TCFunctions { function f_TC_ISC_SCCAS_CPT_INV_01(in CSeq p_cSeq_s) runs on ImsComponent { - // TODO: set correct service profiles + // 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, @@ -1488,7 +1496,7 @@ module AtsSccas_TCFunctions { // Local variables var CSeq v_cSeq_s := p_cSeq_s; - // Preambule + // Preamble f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); @@ -1518,8 +1526,7 @@ module AtsSccas_TCFunctions { mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); - // TODO: the UE entity previouslyEstablishedCallWith - + // STEP: invite LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); f_SendINVITE(m_sccas_invite( @@ -1540,17 +1547,6 @@ module AtsSccas_TCFunctions { // EXPECTED: 200 ok f_awaitingResponse(mw_sccas_Response_200mediaOnly(200, vc_callIdReg, p_cSeq_s, vc_from, vc_to, vc_via, ?, ?, ?, ?)); -// template (present) Response ( -// 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 := * f_deregistrationAS(p_cSeq_s); @@ -1563,12 +1559,13 @@ module AtsSccas_TCFunctions { // Local variables var CSeq v_cSeq_s := p_cSeq_s; - // Preambule + // 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( @@ -1592,9 +1589,7 @@ module AtsSccas_TCFunctions { ), mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact) ); - - // TODO: the UE entity hasReceived200OkOnInitialRequestForDialogWith - + // STEP: sen ACK f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); @@ -1613,7 +1608,7 @@ module AtsSccas_TCFunctions { // Local variables var CSeq v_cSeq_s := p_cSeq_s; - // Preambule + // Preamble f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); @@ -1644,7 +1639,6 @@ module AtsSccas_TCFunctions { ); 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)); @@ -1655,7 +1649,7 @@ module AtsSccas_TCFunctions { vc_from, vc_to, vc_via_REG, - m_contact_g3gppSrvccAlertingFeature, // TODO: correct use auf g3gppSrvccAlertingFeatureCapabilityIndicator + m_contact_g3gppSrvccAlertingFeature, // TODO To be refined during validation: correct use auf g3gppSrvccAlertingFeatureCapabilityIndicator omit, // template(omit) Require p_require := omit, vc_route, omit, @@ -1676,7 +1670,7 @@ module AtsSccas_TCFunctions { // Local variables var CSeq v_cSeq_s := p_cSeq_s; - // Preambule + // Preamble f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); @@ -1707,7 +1701,6 @@ module AtsSccas_TCFunctions { ); 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)); @@ -1718,7 +1711,7 @@ module AtsSccas_TCFunctions { vc_from, vc_to, vc_via_REG, - m_contact_g3gppDrvccAlertingFeature, // TODO: correct use auf g3gppDrvccAlertingFeature + 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, @@ -1899,7 +1892,7 @@ module AtsSccas_TCFunctions { function f_TC_ISC_SCCAS_PCT_RES_01(in CSeq p_cSeq_s) runs on ImsComponent { - // Preambule + // Preamble f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); @@ -2014,30 +2007,159 @@ module AtsSccas_TCFunctions { } // 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 { - // Preambule + // 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_registrationAS(p_cSeq_s); - // TODO: - // one dialog is early dialog - // and - // a SIP 180 (Ringing) response to the SIP INVITE request has not been received yet in any of the existing dialogs - // and - // the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting feature-capability indicator as in a Feature-Caps header field of SIP 18x responses - // and - // the Contact header field in the initial SIP INVITE request sent by the SC UE towards the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting media feature tag as - // and - // the remote leg is not a precondition enabled dialog + // 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 + + // 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, @@ -2053,10 +2175,10 @@ module AtsSccas_TCFunctions { m_messageBody_SDP_mediaOnly )); - // TODO PEarlyMedia indicating value "the last received P-Early-Media header field", + // // TODO To be refined during validation: PEarlyMedia indicating value "the last received P-Early-Media header field", - // TODO: Contact indicating value "set to the Contact header field provided by the served UE at the creation of the dialog", - // TODO: 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)"; + // 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); @@ -2121,7 +2243,7 @@ module AtsSccas_TCFunctions { function f_TC_ISC_SCCAS_PCT_RES_02(in CSeq p_cSeq_s) runs on ImsComponent { - // Preambule + // Preamble f_init_userprofile(c_userProfile_UE1atSUThome); f_initSipUrl(c_serviceProfile_EMERGENCY); f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); @@ -2138,7 +2260,7 @@ module AtsSccas_TCFunctions { [] SIPP.receive(mw_Response_1xx_SDPMessage( vc_callId, vc_cSeq, - ?, // TODO: EarlyMedia indicating value "the last received P-Early-Media header field", + ?, // TODO To be refined during validation, EarlyMedia indicating value "the last received P-Early-Media header field", mw_contentType_appclication_sdp, mw_sdpmessageBody )) { diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 5a9872f..a5b8ff7 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -762,9 +762,29 @@ module AtsSccas_Testcases testcase TC_ISC_SCCAS_PCT_UPD_01(inout CSeq p_cSeq_s) runs on ServerSyncComp - system TestAdapter {//TODO add PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG + system TestAdapter { - // TODO + 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 @@ -772,7 +792,23 @@ module AtsSccas_Testcases runs on ServerSyncComp system TestAdapter { - // TODO + 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 @@ -785,7 +821,7 @@ module AtsSccas_Testcases runs on ServerSyncComp system TestAdapter { - // TODO + var ImsComponent v_imsComponent_ueims; // Test control -- GitLab From af55342f0218171805173f086382bd73b86eae58 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Fri, 25 Nov 2022 08:21:27 +0100 Subject: [PATCH 200/202] Finalyze TC_ISC_SCCAS_PCT_INV_04 --- ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 64 +++++++++++++++++++++++++ ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 29 +++++++++++ 2 files changed, 93 insertions(+) diff --git a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index 7bb1733..6c133ee 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -3265,6 +3265,70 @@ module AtsSccas_TCFunctions { } // 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 diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 5a9872f..8adbfb8 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -1749,6 +1749,35 @@ module AtsSccas_Testcases } // 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 -- GitLab From b45ffdc0fa4de582197223aa6b11fe4aac23e759 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Fri, 25 Nov 2022 08:49:48 +0100 Subject: [PATCH 201/202] Finalyze TC_ISC_SCCAS_PCT_INV_04 - Remove CRLF --- ttcn/AtsSccas/AtsSccas_Testcases.ttcn | 4146 ++++++++++++------------- 1 file changed, 2073 insertions(+), 2073 deletions(-) diff --git a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn index 8adbfb8..64c9b11 100644 --- a/ttcn/AtsSccas/AtsSccas_Testcases.ttcn +++ b/ttcn/AtsSccas/AtsSccas_Testcases.ttcn @@ -1,2073 +1,2073 @@ -/* - * @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 {//TODO add PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG - - // TODO - - } // 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 { - - // TODO - - } // 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 { - - // TODO - 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 +/* + * @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 {//TODO add PICS_SCCAS_PS2CS_DUAL_RADIO_ACCES_TRANSFER_OF_CALLS_IN_EARLY_DIALOG + + // TODO + + } // 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 { + + // TODO + + } // 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 { + + // TODO + 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 -- GitLab From 84ca3ad6d603e66e4de1695099d206f2144839c3 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Fri, 25 Nov 2022 09:04:41 +0100 Subject: [PATCH 202/202] Resolve TITAN compiler errors --- ttcn/AtsSccas/AtsSccas_PIXITS.ttcn | 10 ++++++++++ ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn index c41ff9e..8b8dbe4 100644 --- a/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn +++ b/ttcn/AtsSccas/AtsSccas_PIXITS.ttcn @@ -51,11 +51,20 @@ module AtsSccas_PIXITS { */ 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 @@ -117,6 +126,7 @@ module AtsSccas_PIXITS { 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_TCFunctions.ttcn b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn index dc5aa2b..2988b4b 100644 --- a/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn +++ b/ttcn/AtsSccas/AtsSccas_TCFunctions.ttcn @@ -4018,7 +4018,7 @@ module AtsSccas_TCFunctions { // Registration f_IncCSeq(v_cSeq_s); - f_setHeadersOPTIONS(v_cSeq_s); + LibSip_Steps.f_setHeadersOPTIONS(v_cSeq_s); AtsSccas_Steps.f_SendOPTIONS( m_OPTIONS_Request_Base( vc_requestUri, -- GitLab