diff --git a/test_purposes/Cx/TP_CX.tplan2 b/test_purposes/Cx/TP_CX.tplan2 index 65d5a378ef45c294854b9079fea09233016da069..f8693a50ea4fd1093b9b6462babace4f7af64bef 100644 --- a/test_purposes/Cx/TP_CX.tplan2 +++ b/test_purposes/Cx/TP_CX.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019. +Copyright (c) ETSI 2023. 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 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ diff --git a/test_purposes/Diameter_Common.tplan2 b/test_purposes/Diameter_Common.tplan2 index a87b9f2f14fa883e521be384e9c2e7cdabd80eb1..d9e7cbcc58698f4dcfa647d6ee6d60aa23af4f3a 100644 --- a/test_purposes/Diameter_Common.tplan2 +++ b/test_purposes/Diameter_Common.tplan2 @@ -1,20 +1,18 @@ -/* 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 +/* +Copyright (c) ETSI 2023. + +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. +* +* @author TTF T010 */ diff --git a/test_purposes/E_CSCF/TP_E_CSCF.tplan2 b/test_purposes/E_CSCF/TP_E_CSCF.tplan2 index af50eeed24509b34204bb84a86acb6c594327a27..1e650ba28f297e7058bae707c6d2b559e31b5fe9 100644 --- a/test_purposes/E_CSCF/TP_E_CSCF.tplan2 +++ b/test_purposes/E_CSCF/TP_E_CSCF.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ /* E-CSCF interfaces to @@ -32,7 +34,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the EATF." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2 1)" + "ETSI TS 124 229 [1], Clause 5.11.2 1" Config Id CF_VoLTE_INT_ES @@ -85,7 +87,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the LRF." Reference - "ETSI TS 124 229 [1], Clauses 5.11.3" + "ETSI TS 124 229 [1], Clause 5.11.3" Config Id CF_VoLTE_INT_ES @@ -134,7 +136,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the PSAP in the IM CN subsystem of own network." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -218,6 +220,54 @@ Package TP_E_CSCF { } // End of TP_MM_ECSCF_ECO_INVITE_02 + Test Purpose { + + TP Id TP_MM_ECSCF_ECO_INVITE_03 + /* Mm interface at E-CSCF/IM CN subsystem of own network */ + + Test objective "Verify that the E-CSCF successfully processes an callback INVITE from PSAP over the IM CN subsystem of own network and routes the request to the P-CSCF." + + Reference + "ETSI TS 123 167 [1], Clause 4.1 item 12" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the IMS_E_CSCF entity supportsRoutingTo the IM_CN + } + + Expected behaviour + ensure that { + when { + the IMS_E_CSCF entity receives an INVITE containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_P_CSCF_A_VIA, + Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + PAssertedIdentity, + MessageBody; + from the IM_CN entity + } + then { + the IMS_E_CSCF entity sends an INVITE containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_E_CSCF_VIA, + Route indicating value PX_PSAP_SERVICE_ROUTE_IM_CN, + RecordRoute PX_E_CSCF_SERVICE_ROUTE, + PChargingVector, + not PChargingFunctionAddresses, + MessageBody; + to the IMS_P_CSCF_A entity + } + } + + } // End of TP_MM_ECSCF_ECO_INVITE_03 + Test Purpose { TP Id TP_MX_ECSCF_ECO_INVITE_01 @@ -226,7 +276,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the IBCF for a PSAP in another network." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -277,7 +327,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the IBCF for a PSAP in another network and includes the LRF provided URI in the Route header." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -316,6 +366,56 @@ Package TP_E_CSCF { } // End of TP_MX_ECSCF_ECO_INVITE_02 + Test Purpose { + + TP Id TP_MX_ECSCF_ECO_INVITE_03 + /* Mx interface at E-CSCF/IBCF */ + + Test objective "Verify that the E-CSCF successfully processes a callback INVITE from the PSAP in another network over the IBCF and routes the request to the P-CSCF." + + Reference + "ETSI TS 123 167 [1], Clause 4.1 item 12" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A + } + + Expected behaviour + ensure that { + when { + the IMS_E_CSCF entity receives an INVITE containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_P_CSCF_A_VIA, + Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + PAssertedIdentity, + MessageBody; + from the IMS_IBCF_A entity + } + then { + the IMS_E_CSCF entity sends an INVITE containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_E_CSCF_VIA, + Route indicating value PX_P_SCSF_SERVICE_ROUTE_IBCF, + RecordRoute PX_E_CSCF_SERVICE_ROUTE, + PChargingVector containing + not term_ioi_parameter, + orig_ioi_parameter + indicating value "Operator Identifier Of ImsA";, + MessageBody; + to the IMS_P_CSCF_A entity + } + } + + } // End of TP_MX_ECSCF_ECO_INVITE_03 + Test Purpose { TP Id TP_MI_ECSCF_ECO_INVITE_01 @@ -324,7 +424,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the BGCF for a PSAP in the PSTN." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -375,7 +475,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the BGCF for a PSAP in the PSTN and includes the LRF provided URI in the Request-URI." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -414,6 +514,57 @@ Package TP_E_CSCF { } // End of TP_MI_ECSCF_ECO_INVITE_02 + Test Purpose { + + TP Id TP_MI_ECSCF_ECO_INVITE_03 + /* Mx interface at E-CSCF/BGCF */ + + Test objective "Verify that the E-CSCF successfully processes a callback INVITE from PSAP in the PSTN over BGCF and routes the request to the P-CSCF." + + Reference + "ETSI TS 123 167 [1], Clause 4.1 item 12" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the IMS_E_CSCF entity supportsRoutingTo the BGCF + } + + Expected behaviour + ensure that { + when { + the IMS_E_CSCF entity receives an INVITE containing + From indicating value PX_PSAP_TEL_URI,// see 5.11.2 6) b) + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_BGCF_VIA, + Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + PAssertedIdentity, + MessageBody; + from the IMS_BGCF_A entity + } + then { + the IMS_E_CSCF entity sends an INVITE containing + RequestLine indicating value PX_UE_A_SIP_URI, + From indicating value PX_PSAP_TEL_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_E_CSCF_VIA, + Route indicating value PX_P_CSCD_SERVICE_ROUTE, + RecordRoute PX_E_CSCF_SERVICE_ROUTE, + PChargingVector containing + not term_ioi_parameter, + orig_ioi_parameter + indicating value "Operator Identifier Of ImsA";, + MessageBody; + to the IMS_P_CSCF_A entity + } + } + + } // End of TP_MI_ECSCF_ECO_INVITE_03 + Test Purpose { TP Id TP_MM_ECSCF_ECO_BYE_01 @@ -422,7 +573,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency Call and routes the request to the PSAP in the IM CN subsystem of own network." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -464,9 +615,9 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes a BYE from the PSAP in the IM CN subsystem for an Emergency Call and routes the request to the P-CSCF of home network." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" - Config Id CF_VxLTE_INT + Config Id CF_VoLTE_INT_ES PICS Selection NONE @@ -479,20 +630,18 @@ Package TP_E_CSCF { ensure that { when { the IMS_E_CSCF entity receives a BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_SIP_EMERGENCY_SERVICE_URN, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE; + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA; from the IM_CN entity } then { the IMS_E_CSCF entity sends a BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_SIP_EMERGENCY_SERVICE_URN, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE; + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA; to the IMS_P_CSCF_A entity } } @@ -507,7 +656,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency Call and routes the request to the IBCF for a PSAP in another network." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -515,7 +664,7 @@ Package TP_E_CSCF { Initial conditions with { the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A and - the UE_A entity previouslyEstablishedEmergencyCallWith the PSA via IMS_IBCF_A + the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP via IMS_IBCF_A } Expected behaviour @@ -550,7 +699,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes a BYE from the IBCF for a PSAP in another network for an Emergency Call and routes the request to the P-CSCF." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -558,27 +707,25 @@ Package TP_E_CSCF { Initial conditions with { the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A and - the UE_A entity previouslyEstablishedEmergencyCallWith the PSA via IMS_IBCF_A + the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP via IMS_IBCF_A } Expected behaviour ensure that { when { the IMS_E_CSCF entity receives a BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_SIP_EMERGENCY_SERVICE_URN, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE; + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA; from the IMS_IBCF_A entity } then { the IMS_E_CSCF entity sends a BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_SIP_EMERGENCY_SERVICE_URN, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE; + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA; to the IMS_P_CSCF_A entity } } @@ -593,7 +740,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency Call and routes the request to the BGCF for a PSAP in the PSTN." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -636,7 +783,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes a BYE from the BGCF for a PSAP in the PSTN for an Emergency Call and routes the request to the P-CSCF." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -651,20 +798,18 @@ Package TP_E_CSCF { ensure that { when { the IMS_E_CSCF entity receives a BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_SIP_EMERGENCY_SERVICE_URN, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE; + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA; from the IMS_BGCF_A entity } then { the IMS_E_CSCF entity sends a BYE containing - From indicating value PX_UE_A_SIP_URI, - To indicating value PX_SIP_EMERGENCY_SERVICE_URN, - CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, - Route indicating value PX_UE_A_SERVICE_ROUTE; + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA; to the IMS_P_CSCF_A entity } } @@ -673,13 +818,13 @@ Package TP_E_CSCF { Test Purpose { - TP Id TP_MM_ECSCF_ECO_CANCEL_01 + TP Id TP_MM_ECSCF_EMC_CANCEL_01 /* Mm interface at E-CSCF/IM CN subsystem of own network */ Test objective "Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency Call under establishment and routes the request to the PSAP in the IM CN subsystem of own network." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -712,17 +857,17 @@ Package TP_E_CSCF { } } - } // End of TP_MM_ECSCF_ECO_CANCEL_01 + } // End of TP_MM_ECSCF_EMC_CANCEL_01 Test Purpose { - TP Id TP_MX_ECSCF_ECO_CANCEL_01 + TP Id TP_MX_ECSCF_EMC_CANCEL_01 /* Mx interface at E-CSCF/IBCF */ Test objective "Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency Call under establishment and routes the request to the IBCF for a PSAP in another network." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -755,17 +900,17 @@ Package TP_E_CSCF { } } - } // End of TP_MX_ECSCF_ECO_CANCEL_01 + } // End of TP_MX_ECSCF_EMC_CANCEL_01 Test Purpose { - TP Id TP_MI_ECSCF_ECO_CANCEL_01 + TP Id TP_MI_ECSCF_EMC_CANCEL_01 /* Mx interface at E-CSCF/BGCF */ Test objective "Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency Call under establishment and routes the request to the BGCF for a PSAP in the PSTN." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -798,7 +943,7 @@ Package TP_E_CSCF { } } - } // End of TP_MI_ECSCF_ECO_CANCEL_01 + } // End of TP_MI_ECSCF_EMC_CANCEL_01 Test Purpose { @@ -807,9 +952,9 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes a 480 response from the PSAP in the IM CN subsystem for an Emergency Call and routes the response to the P-CSCF of home network." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" - Config Id CF_VxLTE_INT + Config Id CF_VoLTE_INT_ES PICS Selection NONE @@ -850,7 +995,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes a 480 response from the IBCF for a PSAP in another network for an Emergency Call and routes the response to the P-CSCF." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -858,7 +1003,7 @@ Package TP_E_CSCF { Initial conditions with { the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A and - the UE_A entity previouslyEstablishedEmergencyCallWith the PSA via IMS_IBCF_A + the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP via IMS_IBCF_A } Expected behaviour @@ -893,7 +1038,7 @@ Package TP_E_CSCF { Test objective "Verify that the E-CSCF successfully processes a 480 response from the BGCF for a PSAP in the PSTN for an Emergency Call and routes the response to the P-CSCF." Reference - "ETSI TS 124 229 [1], Clauses 5.11.2" + "ETSI TS 124 229 [1], Clause 5.11.2" Config Id CF_VoLTE_INT_ES @@ -927,6 +1072,134 @@ Package TP_E_CSCF { } } // End of TP_MI_ECSCF_ECO_480INVITE_01 + + Test Purpose { + + TP Id TP_MM_ECSCF_EMC_487INVITE_01 + /* Mm interface at E-CSCF/IM CN subsystem of own network */ + Test objective "Verify that the E-CSCF successfully processes a 487 response from the PSAP in the IM CN subsystem for an Emergency Call and routes the response to the P-CSCF of home network." + + Reference + "ETSI TS 124 229 [1], Clause 5.11.2" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the IMS_E_CSCF entity supportsRoutingTo the IM_CN and + the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP + } + + Expected behaviour + ensure that { + when { + the IMS_E_CSCF entity receives a 487INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + from the IM_CN entity + } + then { + the IMS_E_CSCF entity sends a 487INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + 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_P_CSCF_A entity + } + } + + } // End of TP_MM_ECSCF_EMC_487INVITE_01 + + Test Purpose { + + TP Id TP_MX_ECSCF_EMC_487INVITE_01 + /* Mx interface at E-CSCF/IBCF */ + + Test objective "Verify that the E-CSCF successfully processes a 487 response from the IBCF for a PSAP in another network for an Emergency Call and routes the response to the P-CSCF." + + Reference + "ETSI TS 124 229 [1], Clause 5.11.2" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A and + the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP via IMS_IBCF_A + } + + Expected behaviour + ensure that { + when { + the IMS_E_CSCF entity receives a 487INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + 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_IBCF_A entity + } + then { + the IMS_E_CSCF entity sends a 487INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + 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_P_CSCF_A entity + } + } + + } // End of TP_MX_ECSCF_EMC_487INVITE_01 + + Test Purpose { + + TP Id TP_MI_ECSCF_EMC_487INVITE_01 + /* Mx interface at E-CSCF/BGCF */ + + Test objective "Verify that the E-CSCF successfully processes a 487 response from the BGCF for a PSAP in the PSTN for an Emergency Call and routes the response to the P-CSCF." + + Reference + "ETSI TS 124 229 [1], Clause 5.11.2" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the IMS_E_CSCF entity supportsRoutingTo the BGCF and + the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP via IMS_BGCF_A + } + + Expected behaviour + ensure that { + when { + the IMS_E_CSCF entity receives a 487INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + 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_BGCF_A entity + } + then { + the IMS_E_CSCF entity sends a 487INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + 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_P_CSCF_A entity + } + } + + } // End of TP_MI_ECSCF_EMC_487INVITE_01 } // End of Package TP_E_CSCF diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index 55cb9a533056577564b184a890a302845978f217..eceb18d129a19936a5a444cd4b29204e68483584 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ /* Gm interface at UE/P-CSCF */ @@ -51,10 +53,10 @@ Package TP_GM { Realm indicating value PX_UE_A_REALM, Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "", - not term_ioi, + not term_ioi;, not SecurityClient, - Contact indicating value "sos";; - to the UE_A entity + Contact indicating value "sos"; + from the UE_A entity } then { the IMS_P_CSCF_A entity sends a 401_Unauthorized containing @@ -71,7 +73,7 @@ Package TP_GM { Algorithm indicating value PX_UE_A_AUTH_ALG, Nonce indicating value "not empty", qop indicating value "auth";; - from the UE_A entity + to the UE_A entity } } } // End of TP_GM_PCSCF_ECO_REGISTER_01 @@ -163,7 +165,7 @@ Package TP_GM { Via indicating value PX_UE_A_VIA, Authorization indicating value "Invalid credentials", Contact indicating value "sos"; - to the UE_A entity + from the UE_A entity } then { the IMS_P_CSCF_A entity sends a 403_Forbiden containing @@ -171,7 +173,7 @@ Package TP_GM { To indicating value PX_UE_A_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA; - from the UE_A entity + to the UE_A entity } } } // End of TP_GM_PCSCF_ECO_REGISTER_03 @@ -185,7 +187,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [1], Clauses 5.1.6.2 and 5.2.10.5" - Config Id CF_VxLTE_RMI + Config Id CF_VoLTE_RMI_ES PICS Selection NONE @@ -204,7 +206,7 @@ Package TP_GM { Via indicating value PX_UE_A_VIA, Authorization not indicating value GPRS_IMS_Bundled_authentication, Contact indicating value "sos"; - to the UE_A entity + from the UE_A entity } then { the IMS_P_CSCF_B entity sends a 403_Forbidden containing @@ -215,7 +217,7 @@ Package TP_GM { MessageBody containing XML containing ims_3gpp_element indicating value anonymous_emergencycall;;; - from the UE_A entity + to the UE_A entity } } } // End of TP_GM_PCSCF_ECO_REGISTER_04 @@ -229,7 +231,7 @@ Package TP_GM { Reference "ETSI TS 124 229 [1], Clauses 5.1.6.2 and 5.2.10.5" - Config Id CF_VxLTE_RMI + Config Id CF_VoLTE_RMI_ES PICS Selection NONE @@ -248,7 +250,7 @@ Package TP_GM { Via indicating value PX_UE_A_VIA, Authorization not indicating value GPRS_IMS_Bundled_authentication, Contact indicating value "sos"; - to the UE_A entity + from the UE_A entity } then { the IMS_P_CSCF_B entity sends a 420_BadExtension containing @@ -260,7 +262,7 @@ Package TP_GM { MessageBody containing XML containing ims_3gpp_element indicating value anonymous_emergencycall;;; - from the UE_A entity + to the UE_A entity } } } // End of TP_GM_PCSCF_ECO_REGISTER_05 @@ -272,7 +274,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully receives an initial emergency INVITE from an unregistered UE." Reference - "ETSI TS 124 229 [1], Clauses 5.1.6.8.2" + "ETSI TS 124 229 [1], Clause 5.1.6.8.2" Config Id CF_VoLTE_INT_ES @@ -294,7 +296,7 @@ Package TP_GM { From indicating value "Anonymous", To indicating value PX_SIP_EMERGENCY_SERVICE_URN, CallId indicating value PX_UE_A_CALLID, - Via indicating value PX_UE_A_VIA, // see 5.1.6.8.2 7) + Via indicating value PX_UE_A_VIA, // see 5.1.6.8.2 7 Route indicating value PX_UE_A_SERVICE_ROUTE, MessageBody; from the UE_A entity @@ -309,7 +311,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully receives an initial emergency INVITE from an emergency registered UE." Reference - "ETSI TS 124 229 [1], Clauses 5.1.6.8.3" + "ETSI TS 124 229 [1], Clause 5.1.6.8.3" Config Id CF_VoLTE_INT_ES @@ -347,7 +349,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully receives an initial emergency INVITE from a registered but not emergency registered UE." Reference - "ETSI TS 124 229 [1], Clauses 5.1.6.8.4" + "ETSI TS 124 229 [1], Clause 5.1.6.8.4" Config Id CF_VoLTE_INT_ES @@ -383,12 +385,12 @@ Package TP_GM { Test Purpose { - TP Id TP_GM_PCSCF_ECO_INVITE_04 + TP Id TP_GM_PCSCF_NGC_INVITE_01 Test objective "Verify that the P-CSCF successfully receives an initial eCall type INVITE from an emergency registered UE." Reference - "ETSI TS 124 229 [1], Clauses 5.1.6.11" + "ETSI TS 124 229 [1], Clause 5.1.6.11" Config Id CF_VoLTE_INT_ES @@ -413,14 +415,103 @@ Package TP_GM { Route indicating value PX_UE_A_SERVICE_ROUTE, Accept indicating value "application/EmergencyCallData.Control+xml", RecvInfo indicating value "EmergencyCallData.eCall.MSD", - PPreferredIdentity, // one or two instances + PPreferredIdentity, // one or two instances, + ContentDisposition containing + handling indicating value "optional";, // TODO Geolocation header maybe added later, check! MessageBody containing - MIME containing MSD;;; // MIME may contain additional parts e.g., sdp, xml + MIME containing MSD;;; // "application/EmergencyCallData.eCall.MSD" MIME body + // MIME may contain additional parts e.g., sdp, xml + from the UE_A entity + } + } + } // End of TP_GM_PCSCF_NGC_INVITE_01 + + Test Purpose { + + TP Id TP_GM_PCSCF_NGC_INFO_01 + + Test objective "Verify that the P-CSCF successfully receives an INFO from the UE in an + established eCall type emergency call that has been requested to transfer + an updated MSD." + + Reference + "ETSI TS 124 229 [1], Clause 5.1.6.11.3" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isEmergencyAttachedTo the EPC_A and + the UE_A entity isEmergencyRegisteredTo the IMS_A and + the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP + } + + Expected behaviour + ensure that { + when { + the UE_A entity isRequestedToTransferUpdatedMSD + // UE_A has received an INFO request as described in TP_MW_PCSCF_NGC_INFO_01 + } + then { + the IMS_P_CSCF_A entity receives an INFO containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_ECALL_EMERGENCY_SERVICE_URN, // "urn:service:sos.ecall.manual" or "urn:service:sos.ecall.automatic" + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + InfoPackage indicating value "EmergencyCallData.eCall.MSD", + ContentDisposition indicating value "Info-Package", + MessageBody containing + MIME indicating value "application/EmergencyCallData.eCall.MSD", // MIME may contain additional parts e.g., sdp, xml + // MSD not exceeding 140 bytes and encoded in binary ASN.1 + ContentDisposition indicating value "By-Reference";; + from the UE_A entity + } + } + } // End of TP_GM_PCSCF_NGC_INFO_01 + + Test Purpose { + + TP Id TP_GM_PCSCF_ECO_INVITE_05 + + Test objective "Verify that the P-CSCF successfully receives an initial emergency INVITE from a registered but not emergency registered UE." + + Reference + "ETSI TS 124 229 [1], Clause 5.1.6.8.4" + + Config Id CF_VoLTE_RMI_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_B and + the UE_A entity isRegisteredTo the IMS_A and + the UE_A entity not isEmergencyRegisteredTo the IMS_A + /* This implies that the UE is currently attached and registered + to its home operator's network and the IP-CAN does not define emergency bearers + see 5.1.6.1 3rd paragraph */ + } + + Expected behaviour + ensure that { + when { + the UE_A entity isRequestedToEstablishEmergencyCall + } + then { + the IMS_P_CSCF_A entity receives an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PPreferredIdentity, // one or two instances + MessageBody; from the UE_A entity } } - } // End of TP_GM_PCSCF_ECO_INVITE_04 + } // End of TP_GM_PCSCF_ECO_INVITE_05 Test Purpose { @@ -429,7 +520,7 @@ Package TP_GM { Test objective "Verify that the P-CSCF successfully processes a BYE for an emergency call." Reference - "ETSI TS 124 229 [2] Clauses 5.1.6.9" + "ETSI TS 124 229 [2] Clause 5.1.6.9" Config Id CF_VoLTE_INT_ES @@ -461,7 +552,7 @@ Package TP_GM { Test Purpose { - TP Id TP_GM_PCSCF_ECO_CANCEL_01 + TP Id TP_GM_PCSCF_EMC_CANCEL_01 Test objective "Verify that the P-CSCF successfully processes a CANCEL during Emergency Call establishment." @@ -494,7 +585,7 @@ Package TP_GM { } } - } // End of TP_GM_PCSCF_ECO_CANCEL_01 + } // End of TP_GM_PCSCF_EMC_CANCEL_01 Test Purpose { @@ -518,20 +609,20 @@ Package TP_GM { ensure that { when { the IMS_P_CSCF_A entity sends a 200_Ok containing - From indicating value PX_UE_B_SIP_URI, + From indicating value PX_PSAP_SIP_URI, To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE; - from the IMS_E_CSCF entity + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA, + Route indicating value PX_PSAP_SERVICE_ROUTE; + to the IMS_E_CSCF entity } then { the IMS_P_CSCF_A entity sends a 200_Ok containing - From indicating value PX_UE_B_SIP_URI, + From indicating value PX_PSAP_SIP_URI, To indicating value PX_UE_A_SIP_URI, - CallId indicating value PX_UE_B_CALLID, - Via indicating value PX_UE_B_VIA, - Route indicating value PX_UE_B_SERVICE_ROUTE, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA, + Route indicating value PX_PSAP_SERVICE_ROUTE, not PChargingVector, not PChargingFunctionAddresses, not PPreferredIdentity; @@ -564,7 +655,7 @@ Package TP_GM { when { the IMS_P_CSCF_A entity receives a 200_Ok containing From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, + To indicating value PX_PSAP_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE, @@ -576,7 +667,7 @@ Package TP_GM { then { the IMS_P_CSCF_A entity sends a 200_Ok containing From indicating value PX_UE_A_SIP_URI, - To indicating value PX_UE_B_SIP_URI, + To indicating value PX_PSAP_SIP_URI, CallId indicating value PX_UE_A_CALLID, Via indicating value PX_UE_A_VIA, Route indicating value PX_UE_A_SERVICE_ROUTE; @@ -585,6 +676,78 @@ Package TP_GM { } } // End of TP_GM_PCSCF_ECO_200OK_02 + + Test Purpose { + + TP Id TP_GM_PCSCF_EMS_200OK_CANCEL_01 + // TP_GM_PCSCF_200OK_CANCEL_01 from ETSI TS 103 653-1 + + Test objective "Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Originating Leg)." + + Reference + "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the UE_A entity isRequestedToSend a CANCEL + } + then { + the IMS_P_CSCF_A entity receives a 200_Ok containing + not PChargingVector, + not PChargingFunctionAddresses, + not PPreferredIdentity; + from the IMS_E_CSCF entity + } + } + + } // End of TP_GM_PCSCF_EMS_200OK_CANCEL_01 + + Test Purpose { + + TP Id TP_GM_PCSCF_EMC_487INVITE_01 + // TP_GM_PCSCF_487INVITE_01 from ETSI TS 103 653-1 + + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Originating Leg)." + + Reference + "ETSI TS 124 229 [1], Clauses 5.1.3 and 6.1" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the UE_A entity isRequestedToSend an CANCEL + } + then { + the IMS_P_CSCF_A entity sends a 487_INVITE containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA, + Route indicating value PX_PSAP_SERVICE_ROUTE; + to the UE_A entity + } + } + + } // End of TP_GM_PCSCF_EMC_487INVITE_01 } // End of Package TP_GM diff --git a/test_purposes/Gx/TP_GX.tplan2 b/test_purposes/Gx/TP_GX.tplan2 index dc55c7da528b1ca6d2dbc8ff0bccd4dfbdbb0089..e7488b71a4ce31d1747af8b4b070edbc12f1c2b2 100644 --- a/test_purposes/Gx/TP_GX.tplan2 +++ b/test_purposes/Gx/TP_GX.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ @@ -22,12 +24,12 @@ Package TP_GX { Test Purpose { - TP Id TP_GX_PCRF_CCA_01 + TP Id TP_GX_PCRF_ECO_CCA_01 //TP_GX_PCRF_CCA_01 from TS 103 653-1 V2.1.1 without emergency registration Test objective "Verify that IUT when receives CC-Request for PCC Rules containing IMSI for emergency services sends a CC-Answer in case of attachment procedure." Reference - "TS 129 212 [9], clauses 4.5.15.2.1" + "TS 129 212 [9], clause 4.5.15.2.1" Config Id CF_VoLTE_INT_ES @@ -111,7 +113,7 @@ Package TP_GX { Test objective "Verify that IUT when receives CC-Request for PCC Rules containing IMEI for emergency call sends a CC-Answer in case of attachment procedure." Reference - "TS 129 212 [9], clauses 4.5.15.2.1" + "TS 129 212 [9], clause 4.5.15.2.1" Config Id CF_VoLTE_INT_ES diff --git a/test_purposes/Ic/TP_IC.tplan2 b/test_purposes/Ic/TP_IC.tplan2 index dc99d910767d1ac510fbc624d56363f214e0579c..751d0a5fdbd735d3393686b2bdbf5c009464645a 100644 --- a/test_purposes/Ic/TP_IC.tplan2 +++ b/test_purposes/Ic/TP_IC.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ diff --git a/test_purposes/Isc/TP_ISC.tplan2 b/test_purposes/Isc/TP_ISC.tplan2 index 588bc56acec98a92ad011d48b0c9776bacae1d37..0d23f2535ab4a87fa5c8cafae70e005f98bc75dd 100644 --- a/test_purposes/Isc/TP_ISC.tplan2 +++ b/test_purposes/Isc/TP_ISC.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ /* Isc interface at S-CSCF<->AS */ @@ -18,6 +20,46 @@ Package TP_ISC { import all from Sip_Common; + Test Purpose { + + TP Id TP_ISC_SCSCF_EMC_INVITE_01 + + Test objective "Verify that the AS successfully identify the request for emergency call and forwards it towards S-CSCF." + + Reference + "ETSI TS 124 229 [2], Clauses 4.7.3 and 5.7.1.14" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_A entity not isEmergencyRegisteredTo the IMS_A + + } + + Expected behaviour + ensure that { + when { + the IMS_AS_A entity receives an INVITE + from the UE_A entity + } + then { + the IMS_AS_A entity sends an INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + Request_Uri indicating value PX_SIP_EMERGENCY_SERVICE_URN, + Route indicating value PX_E_CSCF_SERVICE_ROUTE, + PChargingVector, + // TODO Geolocation header maybe added later, check! + MessageBody; + to the IMS_S_CSCF_A entity + } + } + } // End of TP_ISC_SCSCF_EMC_INVITE_01 + } // End of Package TP_ISC diff --git a/test_purposes/Mw/TP_MW_IS.tplan2 b/test_purposes/Mw/TP_MW_IS.tplan2 index aef07b053c1eb511c97f4ba1438215bcb911af64..566a0d122b891b16eaf6f601bb68fac7bb4328e8 100644 --- a/test_purposes/Mw/TP_MW_IS.tplan2 +++ b/test_purposes/Mw/TP_MW_IS.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ /* Mw interface at I-CSCF/S-CSCF */ @@ -177,7 +179,7 @@ Package TP_MW_IS { Reference "ETSI TS 124 229 [1], Clauses 5.1.6.2 and 5.2.10.5" - Config Id CF_VxLTE_RMI + Config Id CF_VoLTE_RMI_ES PICS Selection NONE @@ -216,7 +218,7 @@ Package TP_MW_IS { Reference "ETSI TS 124 229 [1], Clauses 5.1.6.2 and 5.2.10.5" - Config Id CF_VxLTE_RMI + Config Id CF_VoLTE_RMI_ES PICS Selection NONE diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 45b0645424a3bcae36ea5ad71c3eb34b2262d5c5..f2fbad4e82f0d964f10dee17e667181cf7fb6f57 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ /* Mw interface at P-CSCF/E-CSCF */ @@ -157,14 +159,14 @@ Package TP_MW_PS { Test Purpose { - TP Id TP_MW_PCSCF_REGISTER_03 + TP Id TP_MW_PCSCF_ECO_REGISTER_03 Test objective "Verify that the P-CSCF rejects invalid credentials within registration (Unsuccessful)." Reference - "ETSI TS 124 229 [1], Clauses 5.2.2.1" + "ETSI TS 124 229 [1], Clause 5.2.2.1" - Config Id CF_VxLTE_RMI_B + Config Id CF_VoLTE_RMI_ES PICS Selection NONE @@ -203,7 +205,7 @@ Package TP_MW_PS { to the UE_A entity } } - } // End of TP_MW_PCSCF_REGISTER_03 + } // End of TP_MW_PCSCF_ECO_REGISTER_03 @@ -353,7 +355,7 @@ Package TP_MW_PS { if the IM CN subsystem of the P-CSCF is not capable to handle emergency sessions." Reference - "ETSI TS 124 229 [1], Clauses 5.2.10.5" + "ETSI TS 124 229 [1], Clause 5.2.10.5" Config Id CF_VoLTE_INT_ES @@ -396,6 +398,52 @@ Package TP_MW_PS { } // End of TP_MW_PCSCF_ECO_INVITE_04 + Test Purpose { + + TP Id TP_MW_PCSCF_ECO_INVITE_05 + + Test objective "Verify that the E-CSCF successfully processes a callback INVITE from PSAP towards P-CSCF." + + Reference + "ETSI TS 124 229 [1], Clauses 5.2.10.3 and 5.2.6.3.3" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isEmergencyAttachedTo the EPC_A and + the UE_A entity isEmergencyRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives an INVITE containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA, + Route indicating value PX_P_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + PAssertedIdentity, + MessageBody; + from the IMS_E_CSCF entity + } + then { + the IMS_P_CSCF_A entity sends an INVITE containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_P_CSCF_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + PPreferredIdentity, // one or two instances + MessageBody; + to the UE_A entity + } + } + + } // End of TP_MW_PCSCF_ECO_INVITE_05 + Test Purpose { TP Id TP_MW_PCSCF_ECO_480INVITE_01 @@ -404,7 +452,7 @@ Package TP_MW_PS { if the E-CSCF informs the P-CSCF that Emergency Services are currently not available." Reference - "ETSI TS 124 229 [1], Clauses 5.2.10.5" + "ETSI TS 124 229 [1], Clause 5.2.10.5" Config Id CF_VoLTE_INT_ES @@ -593,7 +641,7 @@ Package TP_MW_PS { Test Purpose { - TP Id TP_MW_PCSCF_ECO_CANCEL_01 + TP Id TP_MW_PCSCF_EMC_CANCEL_01 Test objective "Verify that the P-CSCF successfully processes a CANCEL during Emergency Call establishment." @@ -633,7 +681,140 @@ Package TP_MW_PS { } } - } // End of TP_MW_PCSCF_ECO_CANCEL_01 + } // End of TP_MW_PCSCF_EMC_CANCEL_01 + + Test Purpose { + + TP Id TP_MW_PCSCF_EMC_200OK_CANCEL_01 + + Test objective "Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Originating Leg)." + + Reference + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a 200_Ok containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA, + Route indicating value PX_PSAP_SERVICE_ROUTE; + from the IMS_E_CSCF entity + } + then { + the IMS_P_CSCF_A entity sends a 200_Ok containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA, + Route indicating value PX_PSAP_SERVICE_ROUTE; + to the UE_A entity + } + } + + } // End of TP_MW_PCSCF_EMC_200OK_CANCEL_01 + + Test Purpose { + + TP Id TP_MW_PCSCF_EMC_487INVITE_01 + // TP_MW_PCSCF_487INVITE_01 from ETSI TS 103 653-1 + + Test objective "Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg)." + + Reference + "ETSI TS 124 229 [1], clauses 5.2.7 and 6.2" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_A entity isRequestedToSend a CANCEL + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a 487_INVITE containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA, + Route indicating value PX_PSAP_SERVICE_ROUTE; + from the IMS_E_CSCF entity + } + then { + the IMS_P_CSCF_A entity sends a 487_INVITE containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA, + Route indicating value PX_PSAP_SERVICE_ROUTE; + to the UE_A entity + } + } + + } // End of TP_MW_PCSCF_EMC_487INVITE_01 + + Test Purpose { + + TP Id TP_MW_PCSCF_NGC_INFO_01 + + Test objective "Verify that the P-CSCF sends an INFO request demanding a transfer of updated MSD." + + Reference + "ETSI TS 124 229 [1], clause 5.1.6.11.3" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A and + the UE_A entity isEmergencyRegisteredTo the IMS_A and + the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a INFO containing "Request transfer of updated MSD"; + from the IMS_E_CSCF entity + } + then { + the IMS_P_CSCF_A entity sends a INFO containing + From indicating value PX_PSAP_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_PSAP_CALLID, + Via indicating value PX_PSAP_VIA, + Route indicating value PX_PSAP_SERVICE_ROUTE, + InfoPackage indicating value "EmergencyCallData.eCall.MSD", + ContentDisposition indicating value "Info-Package", + MessageBody containing + MIME indicating value "application/EmergencyCallData.Control+xml", // MIME may contain additional parts e.g., sdp, xml + request containing + action indicating value "send-data", + datatype indicating value "eCall.MSD";, + ContentDisposition indicating value "By-Reference";; + to the UE_A entity + } + } + + } // End of TP_MW_PCSCF_NGC_INFO_01 } // End of Package TP_MW_PS diff --git a/test_purposes/Mw/TP_MW_SI.tplan2 b/test_purposes/Mw/TP_MW_SI.tplan2 index 1f698b3e05265efda4dc68395ec2597a05a8eafe..14b2d841dc6bbbc1409ede6dfcce2c9a0bac2c04 100644 --- a/test_purposes/Mw/TP_MW_SI.tplan2 +++ b/test_purposes/Mw/TP_MW_SI.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ /* Mw interface at S-CSCF/IBCF */ diff --git a/test_purposes/New Text Document.txt b/test_purposes/New Text Document.txt deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/test_purposes/Rtp/TP_Rtp.tplan2 b/test_purposes/Rtp/TP_Rtp.tplan2 index deadc456e0bd42954c3c43b533ca1eb24978a569..c49cd886305f46a46d0e0389cafc6b5a7cfa776d 100644 --- a/test_purposes/Rtp/TP_Rtp.tplan2 +++ b/test_purposes/Rtp/TP_Rtp.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ @@ -23,7 +25,7 @@ Package TP_RTP { Test Purpose { - TP Id TP_RTP_ECO_UE_01 + TP Id TP_RTP_ECO_01 // TP_RTP_UE_01 from VxLTE TTF T006 Test objective "Verify that media between UE_A/IVS and PSAP is not delivered in any direction before call establishment." @@ -51,11 +53,11 @@ Package TP_RTP { } } - } // End of TP_RTP_ECO_UE_01 + } // End of TP_RTP_ECO_01 Test Purpose { - TP Id TP_RTP_ECO_UE_03 + TP Id TP_RTP_ECO_03 // TP_RTP_UE_03 from VxLTE TTF T006 Test objective "Verify that media between UE_A and UE_B is successfully routed." @@ -83,7 +85,7 @@ Package TP_RTP { } } - } // End of TP_RTP_ECO_UE_03 + } // End of TP_RTP_ECO_03 } // End of Package TP_RTP diff --git a/test_purposes/Rtp_Common.tplan2 b/test_purposes/Rtp_Common.tplan2 index 7da1861d962dcfc8c15d262bca411195edd9c381..6cb40b5d2f2c33c69e62e05213bea820808e61de 100644 --- a/test_purposes/Rtp_Common.tplan2 +++ b/test_purposes/Rtp_Common.tplan2 @@ -1,20 +1,18 @@ -/* 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 +/* +Copyright (c) ETSI 2023. + +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. +* +* @author TTF T010 */ diff --git a/test_purposes/Rx/TP_RX.tplan2 b/test_purposes/Rx/TP_RX.tplan2 index 4719db899374f0ec9247a61f69f6b39bcf7d5447..0c5daef2a9b37cd76f92bc7ec1a295791b03e282 100644 --- a/test_purposes/Rx/TP_RX.tplan2 +++ b/test_purposes/Rx/TP_RX.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ diff --git a/test_purposes/S6a/TP_S6A.tplan2 b/test_purposes/S6a/TP_S6A.tplan2 index ff5f4d25f9d7efe411b7ef48d5050a32d0fb80aa..0057f0ae3391ad48bb6e19bea5557dc8858310a5 100644 --- a/test_purposes/S6a/TP_S6A.tplan2 +++ b/test_purposes/S6a/TP_S6A.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ diff --git a/test_purposes/S9/TP_S9.tplan2 b/test_purposes/S9/TP_S9.tplan2 index fa3ed8fe6e7e3f60c1202b599d95ed488cb5799c..ddeab028087c184443abf1ff46d33dd726e942ef 100644 --- a/test_purposes/S9/TP_S9.tplan2 +++ b/test_purposes/S9/TP_S9.tplan2 @@ -11,6 +11,8 @@ from its use or inability of use.This permission does not apply to any documenta 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. +* +* @author TTF T010 */ diff --git a/test_purposes/Sh/TP_Sh.tplan2 b/test_purposes/Sh/TP_Sh.tplan2 index ecde9689cf1ec444a86af63fc3ac413f6cf27d36..fd249bbe6c86ef8976b4dd45ac3c7e7932d858a0 100644 --- a/test_purposes/Sh/TP_Sh.tplan2 +++ b/test_purposes/Sh/TP_Sh.tplan2 @@ -1,5 +1,5 @@ /* -Copyright (c) ETSI 2019. +Copyright (c) ETSI 2023. 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/Sip_Common.tplan2 b/test_purposes/Sip_Common.tplan2 index c593bf47da1724de159754730164946990e1db53..eeb2bd6bfb9d23fb87f51241e70c91caf79142b0 100644 --- a/test_purposes/Sip_Common.tplan2 +++ b/test_purposes/Sip_Common.tplan2 @@ -1,20 +1,18 @@ -/* 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 +/* +Copyright (c) ETSI 2023. + +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. +* +* @author TTF T010 */ @@ -96,6 +94,7 @@ Package Sip_Common { - isRequestedToSend - isRequestedToEstablishEmergencyCall - isRequestedToEstablisheCallTypeEmergencyCall + - isRequestedToTransferUpdatedMSD - isRequestedToDeregisterUser - isBusy - isTemporaryUnavailable @@ -109,6 +108,7 @@ Package Sip_Common { - hasAchievedINVITE - hasSentINVITETo - supportsRoutingTo + - supportsCallbackTo ; } // End of Domain section diff --git a/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn b/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn index 8004e356f0aa0086b18e3d32ae22e13528d23984..25a74fb013db0df8bffcd3416730e4b7d1aea65a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn @@ -28,9 +28,7 @@ module AtsImsIot_Emergency { import from AtsImsIot_TP_behavior_MW_PS all; import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_MW_IS all; - import from AtsImsIot_TP_behavior_MW_EC all; - import from AtsImsIot_TP_behavior_MW_EB all; - import from AtsImsIot_TP_behavior_Mx_LRF all; // FIXME Rename into MX_ + import from AtsImsIot_TP_behavior_MX all; import from AtsImsIot_TP_behavior_MM all; import from AtsImsIot_TP_behavior_MI all; import from AtsImsIot_TP_behavior_ML all; @@ -45,121 +43,121 @@ module AtsImsIot_Emergency { import from AtsImsIot_PIXITS all; /** - * @see ETSI TS 103 795-2 Clause 5 Test Descriptions (Interoperability at HPLMN) + * @see ETSI TS 103 795-2 Clause 5 Test Descriptions (Interoperability at HPLMN) */ group Interoperability { /** - * @see ETSI TS 103 795-2 Clause 5.1 Network Attachment + * @see ETSI TS 103 795-2 Clause 5.1 Network Attachment */ group NetworkAttachment { group UENetworkAttachmentWithUSIM { - /** - * @desc Emergency Network Attachment and Establishment of the Emergency Bearer with USIM. - * On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address. - * The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF - * and allowed forwarding towards E-CSCF - * @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12; - * TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails) - * - */ - testcase TC_VoLTE_ECO_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { - - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - - // test body - // Check that user A starts initial network attachment - f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2) - f_mtc_check_TP_S6A_HSS_ECO_ULA_01 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 3) - f_mtc_check_TP_GX_PCRF_ECO_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5) - - // postamble - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnect component ports - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } - } // End of TC TC_VoLTE_ECO_INT_ATT_01 + /** + * @desc Emergency Network Attachment and Establishment of the Emergency Bearer with USIM. + * On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address. + * The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF + * and allowed forwarding towards E-CSCF + * @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12; + * TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails) + * + */ + testcase TC_VoLTE_ECO_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + // test body + // Check that user A starts initial network attachment + f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2) + f_mtc_check_TP_S6A_HSS_ECO_ULA_01 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 3) + f_mtc_check_TP_GX_PCRF_ECO_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5) + + // postamble + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VoLTE_ECO_INT_ATT_01 } // End of group UENetworkAttachmentWithUSIM group UENetworkAttachmentWithoutUSIM { - /** - * @desc Emergency Network Attachment and Establishment of the Emergency Bearer without USIM. - * On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address. - * The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF - * and allowed forwarding towards E-CSCF - * @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12; - * TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails) - * - */ - testcase TC_VoLTE_EMC_INT_ATT_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { - - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_VxLteMonitor_Up(); - - // preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - - // test body - // Check that user A starts initial network attachment - f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2) - f_mtc_check_TP_S6A_HSS_ECO_ULA_01 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 3) - f_mtc_check_TP_GX_PCRF_EMC_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5) - - // postamble - f_mtc_userRadioEnabled ( v_ueA, false, true ); - - //unmap/disconnect component ports - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } - } // End of TC TC_VoLTE_ECO_INT_ATT_02 + /** + * @desc Emergency Network Attachment and Establishment of the Emergency Bearer without USIM. + * On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address. + * The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF + * and allowed forwarding towards E-CSCF + * @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12; + * TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails) + * + */ + testcase TC_VoLTE_EMC_INT_ATT_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + // test body + // Check that user A starts initial network attachment + f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2) + f_mtc_check_TP_S6A_HSS_ECO_ULA_01 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 3) + f_mtc_check_TP_GX_PCRF_EMC_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5) + + // postamble + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VoLTE_ECO_INT_ATT_02 } // End of group UENetworkAttachmentWithoutUSIM } // End of group NetworkAttachment /** - * @see ETSI TS 103 795-2 Clause 5.2 IMS Emergency Registration + * @see ETSI TS 103 795-2 Clause 5.2 IMS Emergency Registration */ group EmergencyRegistration { /** * @desc To perform emergency registration via the established emergency bearer. Note that some UEs perform emergency registration automatically on attachment - in which case this test becomes merged with the previous ones. - * @see ETSI TS 103 795-2 Clause 5.2.1 IMS Emergency Registration - Successful + * @see ETSI TS 103 795-2 Clause 5.2.1 IMS Emergency Registration - Successful */ testcase TD_VoLTE_ECO_INT_REG_01() runs on ImsTestCoordinator system IotSystemInterface { @@ -217,7 +215,7 @@ module AtsImsIot_Emergency { /** * @desc To attempt initial emergency registration via the established emergency bearer. In this case, the emergency registration is not successful due to not accepted UE credentials. Emergency call can be established without emergency registration. - * @see ETSI TS 103 795-2 Clause 5.2.2 IMS Emergency Registration - Unsuccessful + * @see ETSI TS 103 795-2 Clause 5.2.2 IMS Emergency Registration - Unsuccessful */ testcase TD_VoLTE_ECO_INT_REG_02() runs on ImsTestCoordinator system IotSystemInterface { @@ -256,7 +254,7 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MW_PCSCF_ECO_REGISTER_03(vc_vxlte_monitor_components.mwPI); // Events 14, 21 f_mtc_check_TP_MW_ICSCF_REGISTER_03(vc_vxlte_monitor_components.mwIS, true); // Event 17, 20 - f_mtc_check_TP_CX_HSS_ECO_ECO_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 15, 16 + f_mtc_check_TP_CX_HSS_ECO_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 15, 16 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 18, 19 // postamble @@ -276,7 +274,7 @@ module AtsImsIot_Emergency { } // End of group EmergencyRegistration /** - * @see ETSI TS 103 795-2 Clause 5.3 Emergency Session and Emergency Bearer Operations + * @see ETSI TS 103 795-2 Clause 5.3 Emergency Session and Emergency Bearer Operations */ group EmergencySessionEmergencyBearerOperations { @@ -285,7 +283,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session establishment within an emergency registration. * PSAP is located in the IM CN subsystem of IMS A - * @see ETSI TS 103 795-2 Clause 5.3.1.2 UE calling PSAP with emergency registration + * @see ETSI TS 103 795-2 Clause 5.3.1.2 UE calling PSAP with emergency registration */ testcase TD_VoLTE_ECO_INT_INI_01() runs on ImsTestCoordinator system IotSystemInterface { @@ -323,7 +321,11 @@ module AtsImsIot_Emergency { f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_01(); // Test body - f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + if (not PX_ECALL) { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } else { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_04(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF @@ -399,7 +401,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session session establishment within non-emergency registration. * PSAP is located in the IM CN subsystem of IMS A. - * @see ETSI TS 103 795-2 Clause 5.3.1.3 UE calling PSAP with non-emergency registration + * @see ETSI TS 103 795-2 Clause 5.3.1.3 UE calling PSAP with non-emergency registration * @remark This is option2: IBCF is connected to the PSAP, the interface IBCF and the PSAP is the Mm interface */ testcase TD_VoLTE_ECO_INT_INI_02() runs on ImsTestCoordinator system IotSystemInterface { @@ -516,7 +518,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate the establishment of emergency bearers at the originating EPC due to SIP emergency session establishment without any registration. * PSAP is located in the IM CN subsystem of IMS A. - * @see ETSI TS 103 795-2 Clause 5.3.1.4 UE calling PSAP without any registration + * @see ETSI TS 103 795-2 Clause 5.3.1.4 UE calling PSAP without any registration */ testcase TD_VoLTE_ECO_INT_INI_03() runs on ImsTestCoordinator system IotSystemInterface { @@ -669,9 +671,11 @@ module AtsImsIot_Emergency { f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body - //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - - f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + if (not(PX_ECALL)) { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } else { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_04(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF @@ -685,7 +689,7 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); - f_mtc_check_TP_ML_ECSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mlE_LRF, -, v_sip); // Event 11 + f_mtc_check_TP_ML_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mlE_LRF, -, v_sip); // Event 11 f_mtc_check_TP_ML_ECSCF_ECO_3xx_01(vc_vxlte_monitor_components.mlE_LRF, -, v_sip); // Event 12 f_mtc_check_TP_MM_ECSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 13 @@ -750,7 +754,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session establishment within an emergency registration. * PSAP is located in the IM CN subsystem of another network connected via IBCF. - * @see ETSI TS 103 795-2 Clause 5.3.1.6 UE calling PSAP in other network via IBCF + * @see ETSI TS 103 795-2 Clause 5.3.1.6 UE calling PSAP in other network via IBCF */ testcase TD_VoLTE_ECO_INT_INI_05 ( ) runs on ImsTestCoordinator system IotSystemInterface { @@ -792,7 +796,11 @@ module AtsImsIot_Emergency { // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + if (not(PX_ECALL)) { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } else { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_04(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF @@ -806,8 +814,8 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); - f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mwEB); // Event 11 - f_mtc_check_TP_MW_IBSCF_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + f_mtc_check_TP_MX_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 11 + f_mtc_check_TP_MX_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic) f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic) @@ -815,7 +823,7 @@ module AtsImsIot_Emergency { // 183 Session Progress f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic, -); // 183 Event 13 - f_mtc_check_TP_MW_IBCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 14 + f_mtc_check_TP_MX_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 14 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 15 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20 @@ -826,7 +834,7 @@ module AtsImsIot_Emergency { f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19 f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 22 - f_mtc_check_TP_MW_IBCF_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 23 + f_mtc_check_TP_MX_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 23 f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 @@ -838,13 +846,13 @@ module AtsImsIot_Emergency { f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 26 f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 26 - f_mtc_check_TP_MW_IBCF_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 27 + f_mtc_check_TP_MX_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 27 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 28 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 29 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 30 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 31 - f_mtc_check_TP_MW_IBCF_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 32 + f_mtc_check_TP_MX_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 32 f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 33 f_mtc_userCheckCallEstablished(v_ueA); // Event 34 @@ -878,7 +886,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session establishment within an emergency registration. * PSAP is located in the IM CN subsystem of another network vonnected via IBCF. The PSAP URI is delivered by the LRF. - * @see ETSI TS 103 795-2 Clause 5.3.1.7 UE calling PSAP in other network via IBCF, LRF derived PSAP URI + * @see ETSI TS 103 795-2 Clause 5.3.1.7 UE calling PSAP in other network via IBCF, LRF derived PSAP URI * @remark This is option2: IBCF is connected to the PSAP, the interface IBCF and the PSAP is the Mm interface */ testcase TD_VoLTE_ECO_INT_INI_06() runs on ImsTestCoordinator system IotSystemInterface { @@ -922,7 +930,11 @@ module AtsImsIot_Emergency { // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + if (not(PX_ECALL)) { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } else { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_04(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF @@ -938,11 +950,11 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // FIXME f_mtc_check_TP_MW_IBCF_xxx <--> f_mtc_check_TP_ML_EBCF_xxx - f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mlE_LRF); // Event 11 + f_mtc_check_TP_ML_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mlE_LRF, -, v_sip); // Event 11 f_mtc_check_TP_MX_LRF_3xxAny_01(vc_vxlte_monitor_components.mlE_LRF, -, v_sip); // Event 12 - f_mtc_check_TP_MW_IBCF_INVITE_02(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 13 - f_mtc_check_TP_MW_IBSCF_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + f_mtc_check_TP_MX_ECSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 13 + f_mtc_check_TP_MX_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 14 f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 14 @@ -950,7 +962,7 @@ module AtsImsIot_Emergency { // 183 Session Progress - f_mtc_check_TP_MW_IBCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 16 + f_mtc_check_TP_MX_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 16 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 24 @@ -961,7 +973,7 @@ module AtsImsIot_Emergency { f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 21 f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 24 - f_mtc_check_TP_MW_IBCF_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 25 + f_mtc_check_TP_MX_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 25 f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 26 f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 27 @@ -973,13 +985,13 @@ module AtsImsIot_Emergency { f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 28 f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 28 - f_mtc_check_TP_MW_IBCF_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 29 + f_mtc_check_TP_MX_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 29 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 30 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 31 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 32 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 33 - f_mtc_check_TP_MW_IBCF_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 34 + f_mtc_check_TP_MX_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 34 f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 35 f_mtc_userCheckCallEstablished(v_ueA); // Event 36 @@ -1014,7 +1026,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session establishment within an emergency registration. * PSAP is located in the PSTN connected via BGCF. - * @see ETSI TS 103 795-2 Clause 5.3.1.8 UE calling PSAP in PSTN via BGCF + * @see ETSI TS 103 795-2 Clause 5.3.1.8 UE calling PSAP in PSTN via BGCF */ testcase TD_VoLTE_ECO_INT_INI_07() runs on ImsTestCoordinator system IotSystemInterface { @@ -1054,7 +1066,11 @@ module AtsImsIot_Emergency { f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body - f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + if (not(PX_ECALL)) { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } else { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_04(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF @@ -1068,13 +1084,13 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); - f_mtc_check_TP_MI_BGCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 11 - f_mtc_check_TP_MI_BGCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + f_mtc_check_TP_MI_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 11 + f_mtc_check_TP_MI_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 12 // 183 Session Progress f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 13 - f_mtc_check_TP_MI_BGCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 14 + f_mtc_check_TP_MI_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 14 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 15 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20 @@ -1085,7 +1101,7 @@ module AtsImsIot_Emergency { f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19 f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 22 - f_mtc_check_TP_MI_BGCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 23 + f_mtc_check_TP_MI_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 23 f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 @@ -1094,13 +1110,13 @@ module AtsImsIot_Emergency { f_mtc_userAnswerCall(v_psap); f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK – Event 26 - f_mtc_check_TP_MI_BGCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 27 + f_mtc_check_TP_MI_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 27 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 28 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 29 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 30 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 31 - f_mtc_check_TP_MI_BGCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 32 + f_mtc_check_TP_MI_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 32 f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 33 f_mtc_userCheckCallEstablished(v_ueA); // Event 34 @@ -1135,7 +1151,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session establishment within an emergency registration. * PSAP is located in the PSTN connected via BGCF. The PSAP URI is delivered by the LRF - * @see ETSI TS 103 795-2 Clause 5.3.1.9 UE calling PSAP in PSTN via BGCF, LRF derived PSAP URI + * @see ETSI TS 103 795-2 Clause 5.3.1.9 UE calling PSAP in PSTN via BGCF, LRF derived PSAP URI */ testcase TD_VoLTE_ECO_INT_INI_08() runs on ImsTestCoordinator system IotSystemInterface { @@ -1175,9 +1191,12 @@ module AtsImsIot_Emergency { f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body - //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + if (not(PX_ECALL)) { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } else { + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_04(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + } f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF @@ -1193,18 +1212,18 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // FIXME f_mtc_check_TP_MW_IBCF_xxx <--> f_mtc_check_TP_ML_EBCF_xxx - f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mlE_LRF); // Event 11 + f_mtc_check_TP_ML_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mlE_LRF, -, v_sip); // Event 11 f_mtc_check_TP_MX_LRF_3xxAny_01(vc_vxlte_monitor_components.mlE_LRF, -, v_sip); // Event 12 - f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mwEB); // Event 13 - f_mtc_check_TP_MW_IBSCF_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + f_mtc_check_TP_MX_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 13 + f_mtc_check_TP_MX_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 14 f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 14 f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,-); // 183 Event 15 // 183 Session Progress - f_mtc_check_TP_MW_IBCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 16 + f_mtc_check_TP_MX_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 16 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 24 @@ -1215,7 +1234,7 @@ module AtsImsIot_Emergency { f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 21 f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 24 - f_mtc_check_TP_MW_IBCF_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 25 + f_mtc_check_TP_MX_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 25 f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 26 f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 27 @@ -1227,13 +1246,13 @@ module AtsImsIot_Emergency { f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 28 f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 28 - f_mtc_check_TP_MW_IBCF_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 29 + f_mtc_check_TP_MX_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 29 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 30 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 31 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 32 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 33 - f_mtc_check_TP_MW_IBCF_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 34 + f_mtc_check_TP_MX_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 34 f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 35 f_mtc_userCheckCallEstablished(v_ueA); // Event 36 @@ -1268,7 +1287,7 @@ module AtsImsIot_Emergency { /** * @desc - * @see ETSI TS 103 795-2 Clause 5.3.1.10 UE calling PSAP over AS with non-emergency registration + * @see ETSI TS 103 795-2 Clause 5.3.1.10 UE calling PSAP over AS with non-emergency registration */ testcase TD_VoLTE_ECO_INT_INI_09() runs on ImsTestCoordinator system IotSystemInterface { @@ -1342,7 +1361,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate that if an emergency call has been terminated, the attempt by the PSAP call taker to communicate back to the emergency caller shall be answered. - * @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP + * @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP * @remark Ipetion 1: PSAP in IMS A */ testcase TD_VoLTE_ECO_INT_INI_10_01() runs on ImsTestCoordinator system IotSystemInterface { @@ -1380,9 +1399,8 @@ module AtsImsIot_Emergency { f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_10_01(); // Test body - //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // INVITE Event 1 + f_mtc_check_TP_MM_ECSCF_ECO_INVITE_03(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // INVITE Event 1 f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 @@ -1405,7 +1423,7 @@ module AtsImsIot_Emergency { f_mtc_userAnswerCall(v_ueA); // Event 26 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 - f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 19 f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 21 f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 22 @@ -1443,7 +1461,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate that if an emergency call has been terminated, the attempt by the PSAP call taker to communicate back to the emergency caller shall be answered. - * @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP + * @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP * @remark Ipetion 1: PSAP NOT in IMS A */ testcase TD_VoLTE_ECO_INT_INI_10_02() runs on ImsTestCoordinator system IotSystemInterface { @@ -1484,11 +1502,11 @@ module AtsImsIot_Emergency { // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // Event 21 + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // Event 2 f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.ic, -, v_sip); - f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mwEB); // Event 3 - f_mtc_check_TP_MW_IBSCF_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + f_mtc_check_TP_MX_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 3 + f_mtc_check_TP_MX_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); @@ -1510,7 +1528,7 @@ module AtsImsIot_Emergency { f_mtc_userAnswerCall(v_ueA); // Event 26 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 - f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 19 f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 21 f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 22 @@ -1548,7 +1566,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate that if an emergency call has been terminated, the attempt by the PSAP call taker to communicate back to the emergency caller shall be answered. - * @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP + * @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP * @remark Ipetion 1: PSAP in PSTN A */ testcase TD_VoLTE_ECO_INT_INI_10_03() runs on ImsTestCoordinator system IotSystemInterface { @@ -1588,11 +1606,47 @@ module AtsImsIot_Emergency { f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body - //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic); // Event 4 - f_mtc_userCheckCallEstablished(v_ueA); // Event 34 - f_mtc_userCheckCallEstablished(v_psap); // Event 34 + f_mtc_check_TP_MX_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 5 + f_mtc_check_TP_MX_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 + f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); + + f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 7 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + // 183 Session Progress + f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 8 + f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 9 + + f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13 + f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic); // Event 14 + + f_mtc_userCheckRinging(v_ueA); // Event 15 + f_mtc_userCheckPeerIsRinging(v_psap); // Event 15 + + f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 16 + f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 + + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 19 + + f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 29 + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // Event 30 + + f_mtc_check_TP_MW_PCSCF_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 31 + f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // Event 32 + + f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // Event 33 + f_mtc_check_TP_MW_PCSCF_ACK_02(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 34 + + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 35 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // ACK Event 36 + + f_mtc_userCheckCallEstablished(v_ueA); // Event 37 + f_mtc_userCheckCallEstablished(v_psap); // Event 37 // Postamble f_mtc_EndCall(v_ueA); @@ -1626,10 +1680,10 @@ module AtsImsIot_Emergency { /** * @desc To perform originating UE session release and the tear down of related dedicated bearers. - * @see ETSI TS 103 795-2 Clause 5.3.3.1 UE Initiated Emergency Session Release + * @see ETSI TS 103 795-2 Clause 5.3.3.1 UE Initiated Emergency Session Release * @remark This is option 1: PSAP is in IMS A network */ - testcase TD_VoLTE_ECO_INT_REL_01_01() runs on ImsTestCoordinator system IotSystemInterface { + testcase TD_VoLTE_EMC_INT_REL_01_01() runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap ); @@ -1662,12 +1716,10 @@ module AtsImsIot_Emergency { } else { // TODO Check OPTIONS from PSAP to E-CSCF } - f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_01(); + f_mtc_check_precond_TD_VoLTE_EMC_INT_REL_01_01(); f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body - //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 3 f_mtc_check_TP_MM_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 4 @@ -1678,7 +1730,7 @@ module AtsImsIot_Emergency { f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 12) f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 13) - f_mtc_check_TP_MW_IBCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 13 + f_mtc_check_TP_MX_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 13 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18 f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19 @@ -1699,23 +1751,23 @@ module AtsImsIot_Emergency { setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } f_cf_adapter_down ( ); - } // End of TC TD_VoLTE_ECO_INT_REL_01_01 + } // End of TC TD_VoLTE_EMC_INT_REL_01_01 - group f_TD_VoLTE_ECO_INT_REL_01_01 { + group f_TD_VoLTE_EMC_INT_REL_01_01 { - function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_01() runs on ImsTestCoordinator { + function f_mtc_check_precond_TD_VoLTE_EMC_INT_REL_01_01() runs on ImsTestCoordinator { log("If the test case fails, please check the preconditions"); // TODO Add real code to check pre-conditions - } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_01 + } // End of function f_mtc_check_precond_TD_VoLTE_EMC_INT_REL_01_01 - } // End of group f_TD_VoLTE_ECO_INT_REL_01_01 + } // End of group f_TD_VoLTE_EMC_INT_REL_01_01 /** * @desc To perform originating UE session release and the tear down of related dedicated bearers. - * @see ETSI TS 103 795-2 Clause 5.3.3.1 UE Initiated Emergency Session Release + * @see ETSI TS 103 795-2 Clause 5.3.3.1 UE Initiated Emergency Session Release * @remark This is option 2: PSAP is not in IMS A network */ - testcase TD_VoLTE_ECO_INT_REL_01_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + testcase TD_VoLTE_EMC_INT_REL_01_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap ); @@ -1749,15 +1801,14 @@ module AtsImsIot_Emergency { } else { // TODO Check OPTIONS from PSAP to E-CSCF } - f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_02(); + f_mtc_check_precond_TD_VoLTE_EMC_INT_REL_01_02(); f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body - //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 3 - f_mtc_check_TP_MW_IBCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 5 + f_mtc_check_TP_MX_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 5 f_mtc_check_TP_IC_IBCF_ECO_BYE_01(vc_vxlte_monitor_components.ic); // Event 6 //Rx/Gx exchange after BYE was received at P-CSCF @@ -1766,7 +1817,7 @@ module AtsImsIot_Emergency { f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 12) f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 13) - f_mtc_check_TP_MW_IBCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 15 + f_mtc_check_TP_MX_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 15 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18 f_mtc_check_TP_GM_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19 @@ -1787,22 +1838,22 @@ module AtsImsIot_Emergency { setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } f_cf_adapter_down ( ); - } // End of TC TD_VoLTE_ECO_INT_REL_01_02 + } // End of TC f_TD_VoLTE_EMC_INT_REL_01_01 - group f_TD_VoLTE_ECO_INT_REL_01_02 { + group f_TD_VoLTE_EMC_INT_REL_01_02 { - function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_02() runs on ImsTestCoordinator { + function f_mtc_check_precond_TD_VoLTE_EMC_INT_REL_01_02() runs on ImsTestCoordinator { log("If the test case fails, please check the preconditions"); - } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_02 + } // End of function f_mtc_check_precond_TD_VoLTE_EMC_INT_REL_01_02 - } // End of f_TD_VoLTE_ECO_INT_REL_01_02 + } // End of f_TD_VoLTE_EMC_INT_REL_01_02 /** * @desc To perform originating UE session release and the tear down of related dedicated bearers. - * @see ETSI TS 103 795-2 Clause 5.3.3.1 UE Initiated Emergency Session Release + * @see ETSI TS 103 795-2 Clause 5.3.3.1 UE Initiated Emergency Session Release * @remark This is option 3: PSAP is in PSTN network */ - testcase TD_VoLTE_ECO_INT_REL_01_03() runs on ImsTestCoordinator system IotSystemInterface { + testcase TD_VoLTE_EMC_INT_REL_01_03() runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap ); @@ -1836,14 +1887,14 @@ module AtsImsIot_Emergency { // TODO Check OPTIONS from PSAP to E-CSCF } f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 - f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_03(); + f_mtc_check_precond_TD_VoLTE_EMC_INT_REL_01_03(); // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 3 - f_mtc_check_TP_MI_BGCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 7 + f_mtc_check_TP_MI_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 7 //Rx/Gx exchange after BYE was received at P-CSCF f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 10 @@ -1851,7 +1902,7 @@ module AtsImsIot_Emergency { f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 12) f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 13) - f_mtc_check_TP_MI_BGCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 17 + f_mtc_check_TP_MI_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 17 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 20 f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 21 @@ -1872,20 +1923,20 @@ module AtsImsIot_Emergency { setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } f_cf_adapter_down ( ); - } // End of TC TD_VoLTE_ECO_INT_REL_01_03 + } // End of TC TD_VoLTE_EMC_INT_REL_01_03 - group f_TD_VoLTE_ECO_INT_REL_01_03 { + group f_TD_VoLTE_EMC_INT_REL_01_03 { - function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_03() runs on ImsTestCoordinator { + function f_mtc_check_precond_TD_VoLTE_EMC_INT_REL_01_03() runs on ImsTestCoordinator { log("If the test case fails, please check the preconditions"); // TODO Add real code to check pre-conditions - } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_03 + } // End of function f_mtc_check_precond_TD_VoLTE_EMC_INT_REL_01_03 - } // End of group f_TD_VoLTE_ECO_INT_REL_01_03 + } // End of group f_TD_VoLTE_EMC_INT_REL_01_03 /** * @desc To perform originating PSAP session release and the tear down of related dedicated bearers. - * @see ETSI TS 103 795-2 Clause 5.3.3.2 PSAP Initiated Emergency Session Release + * @see ETSI TS 103 795-2 Clause 5.3.3.2 PSAP Initiated Emergency Session Release * @remark This is option 1: PSAP is in IMS A network */ testcase TD_VoLTE_ECO_INT_REL_02_01() runs on ImsTestCoordinator system IotSystemInterface { @@ -1926,9 +1977,21 @@ module AtsImsIot_Emergency { f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body - //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); + f_mtc_check_TP_MM_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 1 - // TODO + f_mtc_check_TP_MW_PCSCF_ECO_BYE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7 + f_mtc_check_TP_GM_PCSCF_ECO_BYE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 8 + + //Rx/Gx exchange after BYE was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // Event 9 + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // Event 10 + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // Event 1 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 12 + + f_mtc_check_TP_GM_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 13 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 14 + + f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 15 f_mtc_userCheckCallTerminated(v_ueA); // Event 21 f_mtc_userCheckCallCancelled(v_psap); // Event 20 @@ -1960,7 +2023,7 @@ module AtsImsIot_Emergency { /** * @desc To perform originating PSAP session release and the tear down of related dedicated bearers. - * @see ETSI TS 103 795-2 Clause 5.3.3.2 PSAP Initiated Emergency Session Release + * @see ETSI TS 103 795-2 Clause 5.3.3.2 PSAP Initiated Emergency Session Release * @remark This is option2: PSAP is not in IMS A network */ testcase TD_VoLTE_ECO_INT_REL_02_02() runs on ImsTestCoordinator system IotSystemInterface { @@ -2001,9 +2064,24 @@ module AtsImsIot_Emergency { f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body - //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO + f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 3 + f_mtc_check_TP_MM_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 4 + + f_mtc_check_TP_MW_PCSCF_ECO_BYE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7 + f_mtc_check_TP_GM_PCSCF_ECO_BYE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 8 + + //Rx/Gx exchange after BYE was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // Event 9 + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // Event 10 + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // Event 1 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 12 + + f_mtc_check_TP_GM_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 13 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 14 + + f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 16 + f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // Event 17 f_mtc_userCheckCallTerminated(v_ueA); // Event 21 f_mtc_userCheckCallCancelled(v_psap); // Event 20 @@ -2036,7 +2114,7 @@ module AtsImsIot_Emergency { /** * @desc To perform originating PSAP session release and the tear down of related dedicated bearers. * On call release initiated bye PSAP, the P-CSCF A should trigger the removal of all relevant previously created bearers - * @see ETSI TS 103 795-2 Clause 5.3.3.2 PSAP Initiated Emergency Session Release + * @see ETSI TS 103 795-2 Clause 5.3.3.2 PSAP Initiated Emergency Session Release * @remark This is option2: PSAP is in the same network */ testcase TD_VoLTE_ECO_INT_REL_02_03() runs on ImsTestCoordinator system IotSystemInterface { @@ -2076,9 +2154,24 @@ module AtsImsIot_Emergency { f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body - //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO + f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 4 + f_mtc_check_TP_MX_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 5 + + f_mtc_check_TP_MW_PCSCF_ECO_BYE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7 + f_mtc_check_TP_GM_PCSCF_ECO_BYE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 8 + + //Rx/Gx exchange after BYE was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // Event 9 + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // Event 10 + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // Event 1 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 12 + + f_mtc_check_TP_GM_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 13 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 14 + + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18 + f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // Event 19 f_mtc_userCheckCallTerminated(v_ueA); // Event 21 f_mtc_userCheckCallCancelled(v_psap); // Event 20 @@ -2114,10 +2207,10 @@ module AtsImsIot_Emergency { /** * @desc To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A. - * @see ETSI TS 103 795-2 Clause 5.3.4.1 Emergency Session Abort + * @see ETSI TS 103 795-2 Clause 5.3.4.1 Emergency Session Abort * @remark This is option 1: PSAP is in IMS A network */ - testcase TD_VoLTE_ECO_INT_ABT_01_01() runs on ImsTestCoordinator system IotSystemInterface { + testcase TD_VoLTE_EMC_INT_ABT_01_01() runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap ); @@ -2151,12 +2244,12 @@ module AtsImsIot_Emergency { } else { // TODO Check OPTIONS from PSAP to E-CSCF } - f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_01(); + f_mtc_check_precond_TD_VoLTE_EMC_INT_ABT_01_01(); f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_GM_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + f_mtc_check_TP_GM_PCSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 //Rx/Gx exchange after CANCEL was received at P-CSCF f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 2 @@ -2164,13 +2257,13 @@ module AtsImsIot_Emergency { f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 4) f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 5) - f_mtc_check_TP_MW_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 - f_mtc_check_TP_MM_ECSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 7 + f_mtc_check_TP_MW_PCSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 + f_mtc_check_TP_MM_ECSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 7 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 - f_mtc_check_TP_MW_PCSCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 + f_mtc_check_TP_MW_PCSCF_EMC_487INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26 @@ -2194,23 +2287,23 @@ module AtsImsIot_Emergency { setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } f_cf_adapter_down ( ); - } // End of TC TD_VoLTE_ECO_INT_ABT_01_01 + } // End of TC TD_VoLTE_EMC_INT_ABT_01_01 - group f_TD_VoLTE_ECO_INT_ABT_01_01 { + group f_TD_VoLTE_EMC_INT_ABT_01_01 { - function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_01() runs on ImsTestCoordinator { + function f_mtc_check_precond_TD_VoLTE_EMC_INT_ABT_01_01() runs on ImsTestCoordinator { log("If the test case fails, please check the preconditions"); // TODO Add real code to check pre-conditions - } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_01 + } // End of function f_mtc_check_precond_TD_VoLTE_EMC_INT_ABT_01_01 - } // End of group f_TD_VoLTE_ECO_INT_ABT_01_01 + } // End of group f_TD_VoLTE_EMC_INT_ABT_01_01 /** * @desc To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A. - * @see ETSI TS 103 795-2 Clause 5.3.4.1 Emergency Session Abort + * @see ETSI TS 103 795-2 Clause 5.3.4.1 Emergency Session Abort * @remark This is option 1: PSAP is not in IMS A network */ - testcase TD_VoLTE_ECO_INT_ABT_01_02() runs on ImsTestCoordinator system IotSystemInterface { + testcase TD_VoLTE_EMC_INT_ABT_01_02() runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap ); @@ -2244,13 +2337,13 @@ module AtsImsIot_Emergency { } else { // TODO Check OPTIONS from PSAP to E-CSCF } - f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_02(); + f_mtc_check_precond_TD_VoLTE_EMC_INT_ABT_01_02(); f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_GM_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + f_mtc_check_TP_GM_PCSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 //Rx/Gx exchange after CANCEL was received at P-CSCF f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 2 @@ -2258,23 +2351,23 @@ module AtsImsIot_Emergency { f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 4) f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 5) - f_mtc_check_TP_MW_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 - f_mtc_check_TP_MW_IBCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 9 + f_mtc_check_TP_MW_PCSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 + f_mtc_check_TP_MX_ECSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 9 f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, true); // CANCEL Event 10 (NOTE: comment out if ISC simulated by Ic) f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // 200 CANCEL – Event 11 - f_mtc_check_TP_MW_IBCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 12 + f_mtc_check_TP_MX_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 12 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 f_mtc_check_TP_IC_IBCF_487INVITE_01(vc_vxlte_monitor_components.ic); // Event 20 - f_mtc_check_TP_MW_IBCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 21 - f_mtc_check_TP_MW_PCSCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 + f_mtc_check_TP_MX_ECSCF_EMC_487INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 21 + f_mtc_check_TP_MW_PCSCF_EMC_487INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27 - f_mtc_check_TP_MW_IBCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 29 + f_mtc_check_TP_MX_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 29 f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, true); // Event 30 f_mtc_userCheckCallTerminated(v_ueA); // Event 33 @@ -2294,23 +2387,23 @@ module AtsImsIot_Emergency { setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } f_cf_adapter_down ( ); - } // End of TC TD_VoLTE_ECO_INT_ABT_01_02 + } // End of TC TD_VoLTE_EMC_INT_ABT_01_02 - group f_TD_VoLTE_ECO_INT_ABT_01_02 { + group f_TD_VoLTE_EMC_INT_ABT_01_02 { - function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_02() runs on ImsTestCoordinator { + function f_mtc_check_precond_TD_VoLTE_EMC_INT_ABT_01_02() runs on ImsTestCoordinator { log("If the test case fails, please check the preconditions"); // TODO Add real code to check pre-conditions - } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_02 + } // End of function f_mtc_check_precond_TD_VoLTE_EMC_INT_ABT_01_02 - } // End of group f_TD_VoLTE_ECO_INT_ABT_01_02 + } // End of group f_TD_VoLTE_EMC_INT_ABT_01_02 /** * @desc To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A. - * @see ETSI TS 103 795-2 Clause 5.3.4.1 Emergency Session Abort + * @see ETSI TS 103 795-2 Clause 5.3.4.1 Emergency Session Abort * @remark This is option 1: PSAP is in PSTN network */ - testcase TD_VoLTE_ECO_INT_ABT_01_03() runs on ImsTestCoordinator system IotSystemInterface { + testcase TD_VoLTE_EMC_INT_ABT_01_03() runs on ImsTestCoordinator system IotSystemInterface { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap ); @@ -2344,13 +2437,13 @@ module AtsImsIot_Emergency { } else { // TODO Check OPTIONS from PSAP to E-CSCF } - f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_03(); + f_mtc_check_precond_TD_VoLTE_EMC_INT_ABT_01_03(); f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_GM_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + f_mtc_check_TP_GM_PCSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 //Rx/Gx exchange after CANCEL was received at P-CSCF f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 2 @@ -2358,22 +2451,22 @@ module AtsImsIot_Emergency { f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 4) f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 5) - f_mtc_check_TP_MW_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 - f_mtc_check_TP_MI_BGCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 13 - f_mtc_check_TP_MM_ECSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 14 + f_mtc_check_TP_MW_PCSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 + f_mtc_check_TP_MI_ECSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 13 + f_mtc_check_TP_MM_ECSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 14 - f_mtc_check_TP_MI_BGCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 16 + f_mtc_check_TP_MI_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 16 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 - f_mtc_check_TP_MM_ECSCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 22 - f_mtc_check_TP_MI_BGCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 23 - f_mtc_check_TP_MW_PCSCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 + f_mtc_check_TP_MM_ECSCF_EMC_487INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 22 + f_mtc_check_TP_MI_ECSCF_EMC_487INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 23 + f_mtc_check_TP_MW_PCSCF_EMC_487INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27 - f_mtc_check_TP_MI_BGCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 31 + f_mtc_check_TP_MI_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 31 f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 32 f_mtc_userCheckCallTerminated(v_ueA); // Event 33 @@ -2393,20 +2486,20 @@ module AtsImsIot_Emergency { setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } f_cf_adapter_down ( ); - } // End of TC TD_VoLTE_ECO_INT_ABT_01_03 + } // End of TC TD_VoLTE_EMC_INT_ABT_01_03 - group f_TD_VoLTE_ECO_INT_ABT_01_03 { + group f_TD_VoLTE_EMC_INT_ABT_01_03 { - function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_03() runs on ImsTestCoordinator { + function f_mtc_check_precond_TD_VoLTE_EMC_INT_ABT_01_03() runs on ImsTestCoordinator { log("If the test case fails, please check the preconditions"); // TODO Add real code to check pre-conditions - } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_03 + } // End of function f_mtc_check_precond_TD_VoLTE_EMC_INT_ABT_01_03 - } // End of group f_TD_VoLTE_ECO_INT_ABT_01_03 + } // End of group f_TD_VoLTE_EMC_INT_ABT_01_03 /** * @desc To demonstrate interaction between UE A and PSAP when an emergency session is rejected. - * @see ETSI TS 103 795-2 5.3.4.3 Emergency Session Reject + * @see ETSI TS 103 795-2 5.3.4.3 Emergency Session Reject * @remark This is option 1: PSAP is in IMS A network */ testcase TD_VoLTE_ECO_INT_REJ_01_01() runs on ImsTestCoordinator system IotSystemInterface { @@ -2469,15 +2562,15 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 11 // 480 Temporary Unvailable - f_mtc_check_TP_MM_ECSCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 480 Temporary Unavailables Event 14 - f_mtc_check_TP_MW_PCSCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 + f_mtc_check_TP_MM_ECSCF_ECO_480INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 480 Temporary Unavailables Event 14 + f_mtc_check_TP_MW_PCSCF_ECO_480INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // Event 24 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 25 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 26 f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 27 - f_mtc_check_TP_GM_PCSCF_480TEMPAV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 28 + f_mtc_check_TP_GM_PCSCF_ECO_380ALTSRV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 28 f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 29 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 30 @@ -2513,7 +2606,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate interaction between UE A and PSAP when an emergency session is rejected. - * @see ETSI TS 103 795-2 5.3.4.3 Emergency Session Reject + * @see ETSI TS 103 795-2 5.3.4.3 Emergency Session Reject * @remark This is option 1: PSAP is not in IMS A network */ testcase TD_VoLTE_ECO_INT_REJ_01_02() runs on ImsTestCoordinator system IotSystemInterface { @@ -2570,21 +2663,21 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 12 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); - f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mwEB); // Event 11 - f_mtc_check_TP_MW_IBSCF_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + f_mtc_check_TP_MX_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 11 + f_mtc_check_TP_MX_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic) // 480 Temporary Unavailable f_mtc_check_TP_IC_IBCF_480TEMPAV_01(vc_vxlte_monitor_components.ic, -, v_sip); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic) - f_mtc_check_TP_MW_PCSCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 + f_mtc_check_TP_MW_PCSCF_ECO_480INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // Event 24 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 25 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 26 f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 27 - f_mtc_check_TP_GM_PCSCF_480TEMPAV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 28 + f_mtc_check_TP_GM_PCSCF_ECO_380ALTSRV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 28 f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 29 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 30 @@ -2620,7 +2713,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate interaction between UE A and PSAP when an emergency session is rejected. - * @see ETSI TS 103 795-2 5.3.4.3 Emergency Session Reject + * @see ETSI TS 103 795-2 5.3.4.3 Emergency Session Reject * @remark This is option 1: PSAP is in PSTN network */ testcase TD_VoLTE_ECO_INT_REJ_01_03() runs on ImsTestCoordinator system IotSystemInterface { @@ -2677,25 +2770,25 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 12 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); - f_mtc_check_TP_MI_BGCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 19 - f_mtc_check_TP_MI_BGCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + f_mtc_check_TP_MI_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 19 + f_mtc_check_TP_MI_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 20 // 480 Temporary Unavailable - f_mtc_check_TP_MM_ECSCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 21 - f_mtc_check_TP_MI_BGCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 22 - f_mtc_check_TP_MW_PCSCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 + f_mtc_check_TP_MM_ECSCF_ECO_480INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 21 + f_mtc_check_TP_MI_ECSCF_ECO_480INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 22 + f_mtc_check_TP_MW_PCSCF_ECO_480INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // Event 24 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 25 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 26 f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 27 - f_mtc_check_TP_GM_PCSCF_480TEMPAV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 28 + f_mtc_check_TP_GM_PCSCF_ECO_380ALTSRV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 28 f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 29 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 30 - f_mtc_check_TP_MI_BGCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 34 + f_mtc_check_TP_MI_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 34 f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 35 f_mtc_userCheckCallTerminated(v_ueA); // Event 33 @@ -2728,7 +2821,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate interaction between UE A and P-CSCF when an emergency session is rejected. - * @see ETSI TS 103 795-2 Clause 5.3.4.3 Emergency Session Reject + * @see ETSI TS 103 795-2 Clause 5.3.3.3 Emergency Session Reject - IMS not able to handle emergency sessions */ testcase TD_VoLTE_ECO_INT_REJ_02() runs on ImsTestCoordinator system IotSystemInterface { @@ -2765,7 +2858,7 @@ module AtsImsIot_Emergency { // Test body f_mtc_check_TP_GM_PCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 - f_mtc_check_TP_GM_PCSCF_480TEMPAV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 + f_mtc_check_TP_GM_PCSCF_ECO_380ALTSRV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 3 // Postamble @@ -2793,91 +2886,375 @@ module AtsImsIot_Emergency { } // End of group f_TD_VoLTE_ECO_INT_REJ_02 + /** + * @desc To demonstrate interaction between UE A and P-CSCF when an emergency session is rejected due to wrong urn + * @see ETSI TS 103 795-2 Clause 5.3.3.4 Emergency Session Reject – due to wrong urn + */ + testcase TD_VoLTE_ECO_INT_REJ_03() runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); + var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY ); + var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME + })) + { + var SipMessage v_sip; + + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_user_up ( v_psap ); + f_cf_VxLteMonitor_Up(); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + if (PX_PSAP_REGISTERED) { + f_mtc_userRegistration(v_psap, v_infoPsap); + } else { + // TODO Check OPTIONS from PSAP to E-CSCF + } + f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_03(); + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + + // Test body + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + f_mtc_check_TP_GM_PCSCF_ECO_380ALTSRV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 3 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_psap); + + //unmap/disconnect component ports + f_cf_user_down ( v_psap ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + f_cf_adapter_down ( ); + } // End of TC TD_VoLTE_ECO_INT_REJ_03 + + group f_TD_VoLTE_ECO_INT_REJ_03 { + + function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_03() runs on ImsTestCoordinator { + log("If the test case fails, please check the preconditions"); + // TODO Add real code to check pre-conditions + } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_03 + + } // End of group f_TD_VoLTE_ECO_INT_REJ_03 + } // End of group EmergencySessionAbortOrReject } // End of group EmergencySessionEmergencyBearerOperations /** - * @see ETSI TS 103 795-2 Clause 5.5 Emergency Network Detachment + * @see ETSI TS 103 795-2 Clause 5.5 Emergency Network Detachment */ group EmergencyNetworkDetachment { group EmergencySessionDetachment { - /** - * @desc To demonstrate UE initiated network emergency detachment (IP-CAN session termination) for a UE that has not yet emergency registered to the IMS or for UE that has been emergency registered to the IMS - * @see ETSI TS 103 795-2 Clause 5.5.1 UE Emergency Network Detachment (with/without Emergency Registration) - */ - testcase TC_VoLTE_ECO_INT_DTC_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { - - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME})){ - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_VxLteMonitor_Up(); - - //preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRadioEnabled ( v_ueA, false, true ); - // test body - // Check that user A starts initial network attachment - f_mtc_check_TP_GX_PCRF_ECO_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3) - - //postamble - - //unmap/disconnect component ports - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } - } // End of TC TC_VoLTE_ECO_INT_DTC_01 - - /** - * @desc To demonstrate UE initiated emergency network detachment (emergency IP-CAN session termination) for a UE that is emergency registered to IMS and also has active emergency session - * @see ETSI TS 103 795-2 Clause 5.5.2 UE Emergency Network Detachment with Previously Established Emergency Registration & Emergency Session - */ - testcase TC_VoLTE_ECO_INT_DTC_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { - - var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); - var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY ); - - f_setVxLteMonIterfacesAvailability(); - //Check required monitor interfaces due to TD - if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME})){ - f_cf_createVxLteMonitor(); - - // map/connect component ports - f_cf_adapter_up ( ); - f_cf_user_up ( v_ueA ); - f_cf_VxLteMonitor_Up(); - - //preamble - f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - f_mtc_userRadioEnabled ( v_ueA, false, true ); - // test body - // TODO - - //postamble - - //unmap/disconnect component ports - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_Down(); - f_cf_adapter_down ( ); - }else{ - //log... - setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") - } - } // End of TC TC_VoLTE_ECO_INT_DTC_02 + /** + * @desc To demonstrate UE initiated network emergency detachment (IP-CAN session termination) for a UE that has not yet emergency registered to the IMS or for UE that has been emergency registered to the IMS + * @see ETSI TS 103 795-2 Clause 5.5.1 UE Emergency Network Detachment (with/without Emergency Registration) + */ + testcase TC_VoLTE_ECO_INT_DTC_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME})){ + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + //preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + f_mtc_userRadioEnabled ( v_ueA, false, true ); + // test body + // Check that user A starts initial network attachment + f_mtc_check_TP_GX_PCRF_EMC_CCA_01(vc_vxlte_monitor_components.gx, false);//f_mtc_check_TP_GX_PCRF_ECO_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3) + + //postamble + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VoLTE_ECO_INT_DTC_01 + + /** + * @desc To demonstrate UE initiated emergency network detachment (emergency IP-CAN session termination) for a UE that is emergency registered to IMS and also has active emergency session + * @see ETSI TS 103 795-2 Clause 5.5.2 UE Emergency Network Detachment with Previously Established Emergency Registration & Emergency Session + * @remark This is option 1: PSAP is in IMS A network + */ + testcase TC_VoLTE_ECO_INT_DTC_02_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); + var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY ); + var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_MW_PE_INTERFACENAME, + PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> PSAP + })){ + var SipMessage v_sip; + + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + if (PX_PSAP_REGISTERED) { + f_mtc_userRegistration(v_psap, v_infoPsap); + } else { + // TODO Check OPTIONS from PSAP to E-CSCF + } + f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_01(); + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + + // Test body + f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 + + //Rx/Gx exchange after BYE was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 3 + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 4) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 5) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 6) + + f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7 + + f_mtc_check_TP_MM_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 8 + + f_mtc_check_TP_MX_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 13 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19 + + f_mtc_check_TP_GX_PCRF_ECO_CCA_01/*f_mtc_check_TP_GX_PCRF_ECO_CCA_02*/ ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20) + + f_mtc_userCheckCallTerminated(v_ueA); // Event 22 + f_mtc_userCheckCallCancelled(v_psap); // Event 23 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_psap); + + //unmap/disconnect component ports + f_cf_user_down ( v_psap ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VoLTE_ECO_INT_DTC_02_01 + + group f_TC_VoLTE_ECO_INT_DTC_02_01 { + + function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_01() runs on ImsTestCoordinator { + log("If the test case fails, please check the preconditions"); + } // End of function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_01 + + } // End of f_TC_VoLTE_ECO_INT_DTC_02_01 + + /** + * @desc To demonstrate UE initiated emergency network detachment (emergency IP-CAN session termination) for a UE that is emergency registered to IMS and also has active emergency session + * @see ETSI TS 103 795-2 Clause 5.5.2 UE Emergency Network Detachment with Previously Established Emergency Registration & Emergency Session + * @remark This is option 2: PSAP is not in IMS A network + */ + testcase TC_VoLTE_ECO_INT_DTC_02_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); + var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY ); + var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_MW_PE_INTERFACENAME, + PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF + PX_SIP_IC_INTERFACENAME // IBCF -> IMS_B -> PSAP + })){ + var SipMessage v_sip; + + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + if (PX_PSAP_REGISTERED) { + f_mtc_userRegistration(v_psap, v_infoPsap); + } else { + // TODO Check OPTIONS from PSAP to E-CSCF + } + f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_02(); + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + + // Test body + f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 + + //Rx/Gx exchange after BYE was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 3 + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 4) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 5) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 6) + + f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7 + + f_mtc_check_TP_MX_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 9 + f_mtc_check_TP_IC_IBCF_ECO_BYE_01(vc_vxlte_monitor_components.ic); // Event 10 + + f_mtc_check_TP_MX_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 15 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19 + + f_mtc_check_TP_GX_PCRF_ECO_CCA_01/*f_mtc_check_TP_GX_PCRF_ECO_CCA_02*/ ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20) + + f_mtc_userCheckCallTerminated(v_ueA); // Event 22 + f_mtc_userCheckCallCancelled(v_psap); // Event 23 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_psap); + + //unmap/disconnect component ports + f_cf_user_down ( v_psap ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VoLTE_ECO_INT_DTC_02_02 + + group f_TC_VoLTE_ECO_INT_DTC_02_02 { + + function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_02() runs on ImsTestCoordinator { + log("If the test case fails, please check the preconditions"); + } // End of function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_02 + + } // End of f_TC_VoLTE_ECO_INT_DTC_02_02 + + /** + * @desc To demonstrate UE initiated emergency network detachment (emergency IP-CAN session termination) for a UE that is emergency registered to IMS and also has active emergency session + * @see ETSI TS 103 795-2 Clause 5.5.2 UE Emergency Network Detachment with Previously Established Emergency Registration & Emergency Session + * @remark This is option 3: PSAP is in PSTN network + */ + testcase TC_VoLTE_ECO_INT_DTC_02_03 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); + var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY ); + var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, + PX_DIAMETER_GX_INTERFACENAME, + PX_DIAMETER_RX_INTERFACENAME, + PX_SIP_MW_PE_INTERFACENAME, // E-CSCF -> IBCF + PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> PSAP + })){ + var SipMessage v_sip; + + f_cf_createVxLteMonitor(); + + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // Preamble + f_mtc_userRegistration(v_ueA, v_userInfoA); + if (PX_PSAP_REGISTERED) { + f_mtc_userRegistration(v_psap, v_infoPsap); + } else { + // TODO Check OPTIONS from PSAP to E-CSCF + } + f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_03(); + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + + // Test body + f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 + + //Rx/Gx exchange after BYE was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 3 + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 4) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 5) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 6) + + f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7 + + f_mtc_check_TP_MI_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 11 + + f_mtc_check_TP_MI_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 17 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19 + + f_mtc_check_TP_GX_PCRF_ECO_CCA_01/*f_mtc_check_TP_GX_PCRF_ECO_CCA_02*/ ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20) + + f_mtc_userCheckCallTerminated(v_ueA); // Event 22 + f_mtc_userCheckCallCancelled(v_psap); // Event 23 + + // Postamble + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_psap); + + //unmap/disconnect component ports + f_cf_user_down ( v_psap ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VoLTE_ECO_INT_DTC_02_03 + + group f_TC_VoLTE_ECO_INT_DTC_02_03 { + + function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_03() runs on ImsTestCoordinator { + log("If the test case fails, please check the preconditions"); + } // End of function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_03 + + } // End of f_TC_VoLTE_ECO_INT_DTC_02_03 } // End of group EmergencySessionDetachment @@ -2886,19 +3263,19 @@ module AtsImsIot_Emergency { } // End of group Interoperability /** - * @see ETSI TS 103 795-2 Clause 6 Test Descriptions (Roaming) + * @see ETSI TS 103 795-2 Clause 6 Test Descriptions (Roaming) */ group Roaming { /** - * @see ETSI TS 103 795-2 6.1 Network Attachment + * @see ETSI TS 103 795-2 6.1 Network Attachment */ group NetworkAttachment { } // End of group NetworkAttachment /** - * @see ETSI TS 103 795-2 Clause 6.2 IMS Emergency Registration in a visited network + * @see ETSI TS 103 795-2 Clause 6.2 IMS Emergency Registration in a visited network */ group IMSEmergencyRegistration { diff --git a/ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn b/ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn index 02bda0b1debf7cad0045ce63faea5212bfecaa7f..b862a52ca879094b47b615dfd7ec4c3031ebd2b1 100644 --- a/ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_PIXITS.ttcn @@ -27,6 +27,11 @@ group SUT_CONF { * @desc Set to true of PSAP shall be registered to the IMS */ modulepar boolean PX_PSAP_REGISTERED := true; + + /** + * @desc Set to true if the emergency call is an issued by an eCall + */ + modulepar boolean PX_ECALL := false; } // end group SUT_CONF diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 7dcd6f072be2cf769aa2878a501311cf9b0cdd5e..f8d01aeb0f4f687d59476c70516662ca235fe4b3 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -224,33 +224,31 @@ module AtsImsIot_TP_behavior_GM { * @desc Verify that the P-CSCF successfully processes a first registration (Successful) * Initial conditions with { * the UE_A entity isAttachedTo the EPC_A and - * the UE_A entity isNotRegisteredTo the IMS_A and - * the UE_B entity isNotRegisteredTo the IMS_B + * the UE_A entity not isRegisteredTo the IMS_A * } * * Expected behaviour * ensure that { * when { - * the UE_A entity isTriggeredToStart - * } - * then { - * the UE_A entity sends a REGISTER containing + * the IMS_P_CSCF_A 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, - * Authorization containing - * Authentication_Schema indicating value PX_TO_BE_DEFINED, - * Authentication_URI indicating value PX_TO_BE_DEFINED, - * Username indicating value PX_UE_A_USERNAME, + * Path, + * Warning, + * WwwAuthenticate containing + * Digest,, * Realm indicating value PX_UE_A_REALM, * Algorithm indicating value PX_UE_A_AUTH_ALG, * Nonce indicating value "", * not term_ioi, - * not SecurityClient - * ;; - * to the IMS_P_CSCF_A entity - * and the UE_A entity receives an 401_Unauthorized containing + * not SecurityClient, + * Contact indicating value "sos";; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 401_Unauthorized containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_A_CALLID, @@ -263,11 +261,9 @@ module AtsImsIot_TP_behavior_GM { * Realm indicating value PX_UE_A_REALM, * Algorithm indicating value PX_UE_A_AUTH_ALG, * Nonce indicating value "not empty", - * qop indicating value "auth" - * ;, - * Contact indicating value "sos" + * qop indicating value "auth";; * ; - * from the IMS_P_CSCF_A entity + * from the UE_A entity * } * } */ @@ -276,7 +272,7 @@ module AtsImsIot_TP_behavior_GM { in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); var SipMessage v_sip; // Check the first REGISTER @@ -322,7 +318,7 @@ module AtsImsIot_TP_behavior_GM { )) }, {0, omit}, - "TP_GM_PCSCF_REGISTER_01 - 401 Unauthorized", + "TP_GM_PCSCF_ECO_REGISTER_01 - 401 Unauthorized", false, p_checkMessage ) @@ -439,12 +435,60 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_02 + /** + * @desc Verify that the P-CSCF successfully processes a full emergency registration (Successful). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A and + * the UE_A entity hasAchievedFirstRegistration + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A 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, + * Authorization containing + * Authentication_Schema indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth", + * not SecurityClient, + * Contact indicating value "sos";; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an 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, + * AuthenticationInfo, + * PAccessNetworkInfo, + * PAssociatedURI indicating value PX_UE_A_SIP_URI, + * PChargingVector, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA" , + * term_ioi_parameter + * indicating value "Operator Identifier Of ImsB" + * Path, + * ServiceRoute; + * to the UE_A entity + * } + * } + */ function f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_02( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); var SipMessage v_sip; // Check the first REGISTER @@ -452,18 +496,20 @@ module AtsImsIot_TP_behavior_GM { f_Iot_Sip_receive( { mw_SipRequest( - mw_TP_GM_PCSCF_REGISTER_02( - mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_Authorization_other - ) + mw_TP_GM_PCSCF_ECO_REGISTER_02( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other, + -, -, + mw_contact(mw_ContactAddress) + ) ) }, { mw_SipRequest(mw_REGISTER_Request_Base) }, {0, omit}, - "TP_GM_PCSCF_REGISTER_02 - Second request", + "TP_GM_PCSCF_ECO_REGISTER_02 - Second request", true, p_checkMessage ) @@ -595,11 +641,10 @@ module AtsImsIot_TP_behavior_GM { } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_03 /** - * @desc Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful). + * @desc Verify that the emergency registration is rejected with 403 (Forbidden) in case invalid credentials sent from UE. (Unsuccessful emergency registration). * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_A entity isNotRegisteredTo the IMS_A and - * the UE_B entity isNotRegisteredTo the IMS_B + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity not isRegisteredTo the IMS_A * } * * Expected behaviour @@ -613,20 +658,14 @@ module AtsImsIot_TP_behavior_GM { * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, - * Authorization containing - * Authentication_Schema indicating value PX_TO_BE_DEFINED, - * Authentication_URI indicating value PX_TO_BE_DEFINED, - * Username indicating value PX_UE_A_INVALID_USERNAME, - * Realm indicating value PX_UE_A_REALM, - * Algorithm indicating value PX_UE_A_AUTH_ALG, - * Nonce indicating value "" - * ;; + * Authorization indicating value "Invalid credentials", + * Contact indicating value "sos"; * from the UE_A entity - * and the IMS_P_CSCF_A entity sends an 404_NotFound containing + * and the IMS_P_CSCF_A entity sends an 403_Forbiden containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_A_CALLID - * ; + * CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA; * to the UE_A entity * } * } @@ -636,7 +675,7 @@ module AtsImsIot_TP_behavior_GM { in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); // User removed from HSS + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); // User removed from HSS var SipMessage v_sip; // Check the first REGISTER @@ -647,7 +686,7 @@ module AtsImsIot_TP_behavior_GM { mw_TP_GM_PCSCF_ECO_REGISTER_03( mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_Authorization_other, + mw_Authorization_other, // FIXME indicating value "Invalid credentials" -, -, mw_contact(mw_ContactAddress) ) @@ -657,7 +696,7 @@ module AtsImsIot_TP_behavior_GM { mw_SipRequest(mw_REGISTER_Request_Base) }, {0, omit}, - "TP_GM_PCSCF_REGISTER_03 - First request", + "TP_GM_PCSCF_ECO_REGISTER_03 - First request", true, p_checkMessage ) @@ -673,7 +712,7 @@ module AtsImsIot_TP_behavior_GM { p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq/*, mw_WwwAuthenticate*/)), + mw_SipResponse(mw_403Forbidden(v_sip.request.msgHeader.cSeq/*, mw_WwwAuthenticate*/)), mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq/*, mw_WwwAuthenticate*/)) }, { @@ -752,6 +791,98 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_04 + /** + * @desc Verify that the emergency registration is rejected with 403 (Forbidden) in case the UE and P-CSCF does not support GPRS-IMS-Bundled authentication. (Unsuccessful emergency registration). + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_B and + * the UE_A entity not isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_B 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, + * Authorization indicating value GPRS_IMS_Bundled_authentication, + * Contact indicating value "sos"; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_B entity sends an 403_Forbiden 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, + * MessageBody containing + * XML containing + * ims_3gpp_element indicating value anonymous_emergencycall;;; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_04( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_GM_PCSCF_ECO_REGISTER_04( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other // FIXME not indicating value GPRS_IMS_Bundled_authenticatio + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_GM_PCSCF_ECO_REGISTER_04 - First request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + + // Check REGISTER 404 Not Found response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_403Forbidden(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), + mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + }, + { + mw_SipResponse(mw_401Unauthorized_Base), + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_04 - 401 Unauthorized", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_04 + function f_mtc_check_TP_GM_PCSCF_REGISTER_05( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false @@ -811,6 +942,68 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_05 + function f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_05( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_GM_PCSCF_ECO_REGISTER_05( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_GM_PCSCF_ECO_REGISTER_05 - Second request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_420BadExtension( + v_sip.request.msgHeader.cSeq, + mw_WwwAuthenticate, + mw_MBody_MIME_Ims3gpp( + *, + ? // FIXME XML message body + ) + )), + mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + }, + { + mw_SipResponse(mw_Response_2xx_Base) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_05 - 200 OK", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_05 + } // End of group imsRegistration group imsDeRegistration { @@ -1321,7 +1514,7 @@ module AtsImsIot_TP_behavior_GM { } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_01 /** - * @desc "Verify that the P-CSCF successfully receives an initial emergency INVITE from an unregistered UE." + * @desc Verify that the P-CSCF successfully receives an initial emergency INVITE from an unregistered UE. * Reference * "ETSI TS 124 229 [1], Clauses 5.1.6.8.2" * Config Id CF_VxLTE_INT @@ -1355,20 +1548,20 @@ module AtsImsIot_TP_behavior_GM { ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); - var ImsUserInfo v_userInfoB := f_getTelUserId(PX_PSAP); + var ImsUserInfo v_psap := f_getTelUserId(PX_PSAP); // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_GM_PCSCF_INVITE_01( - -, // FIXME Set expected value - mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId - mw_To_AddrUnion_TelUrl(-) // v_userInfoB.publicId - )) + { mw_SipRequest(mw_TP_GM_PCSCF_ECO_INVITE_01( + -, // FIXME Set expected value + mw_From_AddrUnion_TelUrl(mw_SipUrl_Anonymous.components.sip.userInfo.userOrTelephoneSubscriber), + mw_To_AddrUnion_TelUrl(v_psap.publicId) + )) }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, - "TP_GM_PCSCF_INVITE_01 - Request", + "TP_GM_PCSCF_ECO_INVITE_01 - Request", true, p_checkMessage ) @@ -1492,18 +1685,18 @@ module AtsImsIot_TP_behavior_GM { { mw_SipRequest(mw_TP_GM_PCSCF_ECO_INVITE_02( -, // FIXME Set expected value ( - mw_From_NameAddr_SipUrl({quotedString:=v_userInfoB.publicId}, v_userInfoB.publicId, v_userInfoB.domain), - mw_From_AddrUnion_TelUrl(v_userInfoB.publicId) + mw_From_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId, v_userInfoA.domain), + mw_From_AddrUnion_TelUrl(v_userInfoA.publicId) ), ( - mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/), - mw_To_AddrUnion_TelUrl(-)//v_userInfoA.publicId + mw_To_NameAddr_SipUrl({quotedString:=v_userInfoB.publicId}, v_userInfoB.publicId/*, v_userInfoA.domain*/), + mw_To_AddrUnion_TelUrl(v_userInfoB.publicId) ) )) }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, - "TP_GM_PCSCF_INVITE_02 - Request", + "TP_GM_PCSCF_ECO_INVITE_02 - Request", true, p_checkMessage ) @@ -1546,28 +1739,57 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_03 - function f_mtc_check_TP_GM_PCSCF_ECO_INVITE_03( // FIXME RMI To be reviewed + /** + * @desc Verify that the P-CSCF successfully receives an initial emergency INVITE from a registered but not emergency registered UE. + * Reference + * "ETSI TS 124 229 [1], Clauses 5.1.6.8.3" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_A entity not isEmergencyRegisteredTo the IMS_A + * } + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToEstablishEmergencyCall + * } + * then { + * the IMS_P_CSCF_A entity receives an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PPreferredIdentity, // one or two instances + * MessageBody; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_ECO_INVITE_03( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, out SipMessage p_sip ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP); // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipRequest(mw_TP_GM_PCSCF_INVITE_03( - -, // FIXME Set expected value - mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) - )) + mw_SipRequest(mw_TP_GM_PCSCF_ECO_INVITE_03( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain) + )) }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, - "TP_GM_PCSCF_INVITE_03 - Request", + "TP_GM_PCSCF_ECO_INVITE_03 - Request", true, p_checkMessage ) @@ -1578,24 +1800,56 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_ECO_INVITE_03 + /** + * @desc Verify that the P-CSCF successfully receives an initial eCall type INVITE from an emergency registered UE. + * Reference + * "ETSI TS 124 229 [1], Clauses 5.1.6.8.3" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity isEmergencyRegisteredTo the IMS_A + * } + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToEstablishEmergencyCall + * } + * then { + * the IMS_P_CSCF_A entity receives an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PPreferredIdentity, // one or two instances + * MessageBody; + * from the UE_A entity + * } + * } + */ function f_mtc_check_TP_GM_PCSCF_ECO_INVITE_04( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, out SipMessage p_sip ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP); // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipRequest(mw_TP_GM_PCSCF_INVITE_04( - -, // FIXME Set expected value - mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) - )) + mw_SipRequest(mw_TP_GM_PCSCF_ECO_INVITE_04( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain), + -, -, + mw_PPreferredID, + mw_accept({mw_acceptBody("application/EmergencyCallData.Control+xml")}), + mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")}) + )) }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, @@ -1899,10 +2153,10 @@ module AtsImsIot_TP_behavior_GM { } // End of function f_mtc_check_TP_GM_PCSCF_100Trying_01 function f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 100 TRYING p_monitorCompRef.start( @@ -1915,7 +2169,7 @@ module AtsImsIot_TP_behavior_GM { }, { mw_SipResponse(mw_100Trying_Base) }, { 0, omit }, - "TP_GM_PCSCF_100Trying_01", + "TP_GM_PCSCF_ECO_100Trying_01", false, p_checkMessage ) @@ -2312,10 +2566,10 @@ module AtsImsIot_TP_behavior_GM { * } */ function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_02( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 183 SESSION_PROGRESS p_monitorCompRef.start( @@ -2364,10 +2618,10 @@ module AtsImsIot_TP_behavior_GM { } // End of function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_03 function f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_04( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 183 SESSION_PROGRESS p_monitorCompRef.start( @@ -2454,6 +2708,38 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_200OK_01 + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg) + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity isEmergencyRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE; + * from the IMS_E_CSCF entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity; + * to the UE_A entity + * } + * } + */ function f_mtc_check_TP_GM_PCSCF_ECO_200OK_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -2863,6 +3149,30 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_BYE_01 + /** + * @desc Verify that the P-CSCF successfully processes a BYE for an emergency call. + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity isEmergencyRegisteredTo the IMS_A and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a BYE + * } + * then { + * the IMS_P_CSCF_A entity receives a BYE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * from the UE_A entity + * } + * } + */ function f_mtc_check_TP_GM_PCSCF_ECO_BYE_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -2958,6 +3268,44 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_BYE_02 + function f_mtc_check_TP_GM_PCSCF_ECO_BYE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_BYE_02( + p_sip.request.msgHeader.callId, + -, // New CSeq + -, // FIXME To be set + { + fieldName := FROM_E, + addressField := p_sip.request.msgHeader.toField.addressField, + fromParams := * + }, //p_sip.request.msgHeader.fromField, + { + fieldName := TO_E, + addressField := p_sip.request.msgHeader.fromField.addressField, + toParams := * + } //p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_BYE_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_ECO_BYE_02 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_BYE_02 + /** * @desc Verify that the P-CSCF successfully processes a BYE (Network initiated). * Initial conditions with { @@ -3157,6 +3505,66 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_01 + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg) + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity isEmergencyRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE; + * from the IMS_E_CSCF entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 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, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * to the IMS_S_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_ECO_200OK_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_ECO_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_ECO_200OK_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_200OK_BYE_01 + /** * @desc Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg). * Initial conditions with { @@ -3213,6 +3621,65 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_02 + /** + * @desc Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg) + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity isEmergencyRegisteredTo the IMS_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a 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, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 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; + * to the IMS_E_CSCF entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_ECO_200OK_BYE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_ECO_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_ECO_200OK_BYE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_200OK_BYE_02 + function f_mtc_check_TP_GM_PCSCF_200OK_BYE_03( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -3382,7 +3849,31 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_01 - function f_mtc_check_TP_GM_PCSCF_ECO_CANCEL_01( + /** + * @desc Verify that the P-CSCF successfully processes a CANCEL during Emergency Call establishment. + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity isEmergencyRegisteredTo the IMS_A and + * the UE_A entity hasAchievedInitialEmergencyINVITE + * } + * + * Expected behaviour + * ensure that { + * when { + * the UE_A entity isRequestedToSend a CANCEL + * } + * then { + * the IMS_P_CSCF_A entity receives a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * from the UE_A entity + * } + * } + */ + function f_mtc_check_TP_GM_PCSCF_EMC_CANCEL_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, inout SipMessage p_sip @@ -3401,7 +3892,7 @@ module AtsImsIot_TP_behavior_GM { }, { mw_SipRequest(mw_CANCEL_Request_Base) }, { 0, omit }, - "TP_GM_PCSCF_CANCEL_01", + "TP_GM_PCSCF_EMC_CANCEL_01", true, p_checkMessage ) @@ -3410,7 +3901,7 @@ module AtsImsIot_TP_behavior_GM { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_GM_PCSCF_ECO_CANCEL_01 + } // End of function f_mtc_check_TP_GM_PCSCF_EMC_CANCEL_01 /** * @desc Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg). @@ -4149,6 +4640,64 @@ module AtsImsIot_TP_behavior_GM { } // End of group imsRequestTermination + group imsAlternateService { + + function f_mtc_check_TP_GM_PCSCF_ECO_380ALTSRV_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_380AlternateService(p_sip.request.msgHeader.cSeq)) + }, + { + mw_SipResponse(mdw_3XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_ECO_380ALTSRV_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_GM_PCSCF_380ALTSRV_01 + + function f_mtc_check_TP_GM_PCSCF_ECO_380ALTSRV_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_380AlternateService(p_sip.request.msgHeader.cSeq)) + }, + { + mw_SipResponse(mdw_3XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_ECO_380ALTSRV_02", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_GM_PCSCF_380ALTSRV_02 + + } // End of group imsTemporaryUnavailable + group imsTemporaryUnavailable { function f_mtc_check_TP_GM_PCSCF_480TEMPAV_01( diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn index 44d7029210a5fb7e168c150b5e6deefae21dc427..866944449a13ca49cb76ccb030fcb2651e765c80 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn @@ -15,6 +15,7 @@ module AtsImsIot_TP_behavior_MI { import from LibIot_PIXITS all; // LibSip import from LibSip_SIPTypesAndValues all; + import from LibSip_MessageBodyTypes all; import from LibSip_Templates all; import from LibSip_Common all; import from LibSip_SDPTypes all; @@ -24,7 +25,6 @@ module AtsImsIot_TP_behavior_MI { import from LibMsrp_Templates all; // AtsImsIot import from AtsImsIot_TestSystem all; - import from AtsImsIot_Templates_MW all; import from AtsImsIot_Templates_MI all; import from AtsImsIot_Templates all; import from AtsImsIot_TypesAndValues all; @@ -32,7 +32,45 @@ module AtsImsIot_TP_behavior_MI { group imsInvite { - function f_mtc_check_TP_MI_BGCF_ECO_INVITE_01( + /** + * @desc "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the BGCF for a PSAP in the PSTN." + * Reference + * "ETSI TS 124 229 [1], Clauses 5.11.3" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the BGCF + * } + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF entity receives an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_P_CSCF_A_VIA, + * Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + * PAssertedIdentity, + * MessageBody; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_E_CSCF entity sends an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_E_CSCF_VIA, + * Route indicating value PX_LRF_SERVICE_ROUTE, + * PChargingVector containing + * not term_ioi_parameter, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA";, + * MessageBody; + * to the IMS_BGCF_A entity + * } + * } + */ + function f_mtc_check_TP_MI_ECSCF_ECO_INVITE_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, out SipMessage p_sip @@ -44,7 +82,7 @@ module AtsImsIot_TP_behavior_MI { // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MI_BGCF_INVITE_01( + { mw_SipRequest(mw_TP_MI_ECSCF_INVITE_01( -, // FIXME Set expected value mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId @@ -52,7 +90,7 @@ module AtsImsIot_TP_behavior_MI { }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, - "TP_MI_BGCF_INVITE_01 - Request", + "TP_MI_ECSCF_ECO_INVITE_01 - Request", true, p_checkMessage ) @@ -62,9 +100,43 @@ module AtsImsIot_TP_behavior_MI { f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); log("##### p_sip: ", p_sip); } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_INVITE_01 + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_INVITE_01 - function f_mtc_check_TP_MI_BGCF_ECO_INVITE_02( + /** + * @desc "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the BGCF for a PSAP in the PSTN and includes the LRF provided URI in the Request-URI." + * Reference + * "ETSI TS 124 229 [1], Clauses 5.11.3" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the IMS_LRF and + * the IMS_E_CSCF entity hasSentINVITETo the IMS_LRF and + * the IMS_E_CSCF entity supportsRoutingTo the BGCF + * } + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF entity receives an INVITE containing + * Contact indicating value LRF_provided_SIP_URI; + * from the IMS_LRF entity + * } + * then { + * the IMS_E_CSCF entity sends an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_E_CSCF_VIA, + * Route indicating value PX_LRF_SERVICE_ROUTE, + * PChargingVector containing + * not term_ioi_parameter, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA";, + * MessageBody; + * to the IMS_BGCF_A entity + * } + * } + */ + function f_mtc_check_TP_MI_ECSCF_ECO_INVITE_02( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, out SipMessage p_sip @@ -76,7 +148,7 @@ module AtsImsIot_TP_behavior_MI { // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MI_BGCF_INVITE_01( + { mw_SipRequest(mw_TP_MI_ECSCF_INVITE_02( -, // FIXME Set expected value mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId @@ -84,7 +156,7 @@ module AtsImsIot_TP_behavior_MI { }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, - "TP_MI_BGCF_INVITE_01 - Request", + "TP_MI_ECSCF_ECO_INVITE_02 - Request", true, p_checkMessage ) @@ -94,34 +166,84 @@ module AtsImsIot_TP_behavior_MI { f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); log("##### p_sip: ", p_sip); } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_INVITE_02 - - } // End of group imsInvite + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_INVITE_02 - group ims100Trying { - /** - * @desc Verify that the E-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg). + * @desc "Verify that the E-CSCF successfully processes a callback INVITE from PSAP in the PSTN over BGCF and routes the request to the P-CSCF." + * Reference + * "ETSI TS 124 229 [1], Clause 4.1 item 12" + * Config Id CF_VxLTE_INT + * PICS Selection NONE * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B + * the IMS_E_CSCF entity supportsRoutingTo the BGCF * } - * * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 100_Trying - * from the PSAP entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 100_Trying - * to the IMS_P_CSCF_A entity + * ensure that { + * when { + * the IMS_E_CSCF entity receives an INVITE containing + * From indicating value PX_PSAP_TEL_URI,// see 5.11.2 6) b) + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_PSAP_CALLID, + * Via indicating value PX_BGCF_VIA, + * Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + * PAssertedIdentity, + * MessageBody; + * from the IMS_BGCF_A entity + * } + * then { + * the IMS_E_CSCF entity sends an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_E_CSCF_VIA, + * Route indicating value PX_P_CSCD_SERVICE_ROUTE, + * RecordRoute PX_E_CSCF_SERVICE_ROUTE, + * PChargingVector containing + * not term_ioi_parameter, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA";, + * MessageBody; + * to the IMS_P_CSCF_A entity * } * } */ - function f_mtc_check_TP_MI_BGCF_ECO_100Trying_01( + function f_mtc_check_TP_MI_ECSCF_ECO_INVITE_03( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MI_ECSCF_INVITE_03( + -, // FIXME Set expected value + mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId + mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MI_ECSCF_ECO_INVITE_03 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_INVITE_03 + + } // End of group imsInvite + + group ims100Trying { + + function f_mtc_check_TP_MI_ECSCF_ECO_100Trying_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, in SipMessage p_sip @@ -130,7 +252,7 @@ module AtsImsIot_TP_behavior_MI { // Check the 100 TRYING p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MI_BGCF_100Trying_01( + { mw_SipResponse(mw_TP_MI_ECSCF_100Trying_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField @@ -138,53 +260,20 @@ module AtsImsIot_TP_behavior_MI { }, { mw_SipResponse(mw_100Trying_Base) }, { 0, omit }, - "TP_MI_BGCF_100Trying_01", + "TP_MI_ECSCF_ECO_100Trying_01", false, p_checkMessage ) ); p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_100Trying_01 + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_100Trying_01 } // End of group ims100Trying group ims180Ringing { - /** - * @desc Verify that the IMS_E_CSCF_A successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 180_Ringing containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * from the PSAP entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 180_Ringing containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * to the IMS_P_CSCF_A entity - * } - * } - */ - function f_mtc_check_TP_MI_BGCF_ECO_180RINGING_01( + function f_mtc_check_TP_MI_ECSCF_ECO_180RINGING_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, in SipMessage p_sip @@ -193,7 +282,7 @@ module AtsImsIot_TP_behavior_MI { // Check the 180 RINGING p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MI_BGCF_180Ringing_01( + { mw_SipResponse(mw_TP_MI_ECSCF_180Ringing_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, mw_To_NameAddr_TelUrl( @@ -203,53 +292,20 @@ module AtsImsIot_TP_behavior_MI { }, { mw_SipResponse(mw_180Ringing_Base) }, { 0, omit }, - "TP_MI_BGCF_180RINGING_01", + "TP_MI_ECSCF_ECO_180RINGING_01", false, p_checkMessage ) ); p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_180RINGING_01 + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_180RINGING_01 } // End of group ims180Ringing group ims183SessionProgress { - /** - * @desc Verify that the IMS_E_CSCF_A successfully processes a 183 (Ringing) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 183_SessionProgress containing - * From indicating value PX_SAP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_SAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * from the PSAP entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 183_SessionProgress containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * to the IMS_P_CSCF_A entity - * } - * } - */ - function f_mtc_check_TP_MI_BGCF_ECO_183SESSION_PROGRESS_01( + function f_mtc_check_TP_MI_ECSCF_ECO_183SESSION_PROGRESS_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, in SipMessage p_sip @@ -258,7 +314,7 @@ module AtsImsIot_TP_behavior_MI { // Check the 183 SESSION_PROGRESS p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MI_BGCF_183SessionProgress_01( + { mw_SipResponse(mw_TP_MI_ECSCF_183SessionProgress_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField @@ -266,63 +322,24 @@ module AtsImsIot_TP_behavior_MI { }, { mw_SipResponse(mw_183SessionProgress_Base) }, { 0, omit }, - "TP_MI_BGCF_183SESSION_PROGRESS_01", + "TP_MI_ECSCF_ECO_183SESSION_PROGRESS_01", false, p_checkMessage ) ); p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_183SESSION_PROGRESS_01 + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_183SESSION_PROGRESS_01 } // End of group ims183SessionProgress group ims200Ok { - /** - * @desc Verify that the IMS_E_CSCF_A successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 200_Ok containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * ; - * from the PSAP entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 200_Ok containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE, - * PChargingVector, - * PChargingFunctionAddresses, - * PPreferredIdentity - * ; - * to the IMS_P_CSCF_A entity - * } - * } - */ - function f_mtc_check_TP_MI_BGCF_ECO_200OK_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MI_ECSCF_ECO_200OK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); @@ -342,7 +359,7 @@ module AtsImsIot_TP_behavior_MI { }, { mw_SipResponse(mw_200OK_Base) }, { 0, omit }, - "TP_MI_BGCF_200OK_01", + "TP_MI_ECSCF_ECO_200OK_01", false, p_checkMessage ) @@ -350,121 +367,141 @@ module AtsImsIot_TP_behavior_MI { p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_200OK_01 + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_200OK_01 } // End of group ims200Ok group imsAck { + function f_mtc_check_TP_MI_ECSCF_ECO_ACK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MI_ECSCF_ACK_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MI_ECSCF_ECO_ACK_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_ACK_01 + + } // End of group imsAck + + group imsBye { + /** - * @desc Verify that the IMS_E_CSCF_A successfully processes a ACK provisional response on initial INVITE (Originating Leg). + * @desc Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency Call and routes the request to the PSAP in the IM CN subsystem of own network * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP * } * * Expected behaviour * ensure that { * when { - * the IMS_E_CSCF_A entity receives an ACK containing + * the IMS_E_CSCF_A entity receives a BYE containing * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_PSAP_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE - * ; + * Route indicating value PX_UE_A_SERVICE_ROUTE; * from the IMS_P_CSCF_A entity * } * then { - * the IMS_E_CSCF_A entity sends an ACK containing + * the IMS_E_CSCF_A entity sends a BYE containing * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_PSAP_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE - * ; - * from the PSAP entity + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * from the IM_CN entity * } * } */ - function f_mtc_check_TP_MI_BGCF_ECO_ACK_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MI_ECSCF_ECO_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - // Check the ACK + // Check the BYE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MI_BGCF_ACK_01( + { mw_SipRequest(mw_TP_MI_ECSCF_BYE_01( p_sip.request.msgHeader.callId, - p_sip.request.msgHeader.cSeq, + -, // New CSeq, -, // FIXME To be set p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField )) }, - { mw_SipRequest(mw_ACK_Request_Base) }, + { mw_SipRequest(mw_BYE_Request_Base) }, { 0, omit }, - "TP_MI_BGCF_ACK_01 - Request", - false, + "TP_MI_ECSCF_ECO_BYE_01 - Request", + true, p_checkMessage ) ); p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_ACK_01 - - } // End of group imsAck - - group imsBye { - + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_BYE_01 + /** - * @desc Verify that the E-CSCF successfully processes a BYE (Terminating Leg). + * @desc Verify that the E-CSCF successfully processes a BYE from the PSAP in the IM CN subsystem for an Emergency Call and routes the request to the P-CSCF of home network * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B and - * the UE_A entity previouslyEstablishedCallWith the UE_B + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP * } * * Expected behaviour * ensure that { * when { * the IMS_E_CSCF_A entity receives a BYE containing - * From indicating value PX_UE_B_SIP_URI, + * From indicating value PX_PSAP_SIP_URI, * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE - * ; - * from the IMS_P_CSCF_A entity + * CallId indicating value PX_PSAP_CALLID, + * Via indicating value PX_PSAP_CALLID; + * from the IM_CN entity * } * then { * the IMS_E_CSCF_A entity sends a BYE containing - * From indicating value PX_UE_B_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE - * ; - * from the PSAP entity + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_P_CSCF_A entity * } * } */ - function f_mtc_check_TP_MI_BGCF_ECO_BYE_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - inout SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MI_ECSCF_ECO_BYE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the BYE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MI_BGCF_BYE_01( + { mw_SipRequest(mw_TP_MI_ECSCF_BYE_01( p_sip.request.msgHeader.callId, -, // New CSeq, -, // FIXME To be set @@ -482,7 +519,7 @@ module AtsImsIot_TP_behavior_MI { }, { mw_SipRequest(mw_BYE_Request_Base) }, { 0, omit }, - "TP_MI_BGCF_BYE_01 - Request", + "TP_MI_ECSCF_ECO_BYE_02 - Request", true, p_checkMessage ) @@ -491,54 +528,17 @@ module AtsImsIot_TP_behavior_MI { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_BYE_01 + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_BYE_02 } // End of group imsBye group ims200OkBye { - /** - * @desc Verify that the E-CSCF successfully processes a 200 (OK) BYE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity sends a 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, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * to the PSAP entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 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, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * to the IMS_P_CSCF_A entity - * } - * } - */ - function f_mtc_check_TP_MI_BGCF_ECO_200OK_BYE_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MI_ECSCF_ECO_200OK_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 200 OK BYE p_monitorCompRef.start( @@ -552,20 +552,49 @@ module AtsImsIot_TP_behavior_MI { }, { mw_SipResponse(mw_200OK_Base) }, { 0, omit }, - "TP_MI_BGCF_200OK_BYE_01", + "TP_MI_ECSCF_ECO_200OK_BYE_01", false, p_checkMessage ) ); p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_200OK_BYE_01 + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_200OK_BYE_01 } // End of group ims200OkBye group imsCancel { - function f_mtc_check_TP_MI_BGCF_ECO_CANCEL_01( + /** + * @desc Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency Call under establishment and routes the request to the BGCF for a PSAP in the PSTN + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the BGCF and + * the UE_A entity hasAchievedInitialEmergencyINVITE the PSAP via IMS_BGCF_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_P_CSCF_A entity + * } + * then { + * the IMS_E_CSCF_A entity sends a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_BGCF_A entity + * } + * } + */ + function f_mtc_check_TP_MI_ECSCF_EMC_CANCEL_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, inout SipMessage p_sip @@ -574,25 +603,17 @@ module AtsImsIot_TP_behavior_MI { // Check the CANCEL p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MI_BGCF_CANCEL_01( + { mw_SipRequest(mw_TP_MI_ECSCF_CANCEL_01( p_sip.request.msgHeader.callId, -, // New CSeq, -, // FIXME To be set - { - fieldName := FROM_E, - addressField := p_sip.request.msgHeader.toField.addressField, - fromParams := * - }, //p_sip.request.msgHeader.fromField, - { - fieldName := TO_E, - addressField := p_sip.request.msgHeader.fromField.addressField, - toParams := * - } //p_sip.request.msgHeader.toField + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField )) }, { mw_SipRequest(mw_CANCEL_Request_Base) }, { 0, omit }, - "TP_MI_BGCF_CANCEL_01 - Request", + "TP_MI_ECSCF_ECO_CANCEL_01 - Request", true, p_checkMessage ) @@ -601,13 +622,42 @@ module AtsImsIot_TP_behavior_MI { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_CANCEL_01 + } // End of function f_mtc_check_TP_MI_ECSCF_EMC_CANCEL_01 } // End of group imsCancel - group imsRequestTermination { + group imsTemporaryUnavailable { - function f_mtc_check_TP_MI_BGCF_ECO_487INVITE_01( + /** + * @desc Verify that the E-CSCF successfully processes a 480 response from the PSAP in the IM CN subsystem for an Emergency Call and routes the response to the P-CSCF of home network + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a 480INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * from the IM_CN entity + * } + * then { + * the IMS_E_CSCF_A entity sends a 480INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MI_ECSCF_ECO_480INVITE_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, inout SipMessage p_sip @@ -617,21 +667,13 @@ module AtsImsIot_TP_behavior_MI { p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipResponse( - mw_487RequestTerminated( // TODO Enforce template - p_sip.request.msgHeader.callId, - -, // New CSeq - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField, - omit - ) - ) + mw_SipResponse(mw_480TemporaryUnavailable(-, p_sip.request.msgHeader.cSeq)) }, { mw_SipResponse(mdw_4XX_Base) }, { 0, omit }, - "TP_MI_BGCF_487INVITE_01", + "TP_MI_ECSCF_ECO_480INVITE_01", true, p_checkMessage ) @@ -640,13 +682,42 @@ module AtsImsIot_TP_behavior_MI { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_487INVITE_01 - - } // End of group imsRequestTermination + } // End of function f_mtc_check_TP_MI_ECSCF_ECO_480INVITE_01 - group imsTemporaryUnavailable { + } // End of group imsTemporaryUnavailable + + group imsRequestTermination { - function f_mtc_check_TP_MI_BGCF_ECO_480TEMPAV_01( + /** + * @desc Verify that the E-CSCF successfully processes a 487 response from the BGCF for a PSAP in the PSTN for an Emergency Call and routes the response to the P-CSCF + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the BGCF and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP via IMS_BGCF_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a 487INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_BGCF_A entity + * } + * then { + * the IMS_E_CSCF_A entity sends a 487INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MI_ECSCF_EMC_487INVITE_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, inout SipMessage p_sip @@ -656,13 +727,21 @@ module AtsImsIot_TP_behavior_MI { p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipResponse(mw_480TemporaryUnavailable(-, p_sip.request.msgHeader.cSeq)) + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + -, // New CSeq + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField, + omit + ) + ) }, { mw_SipResponse(mdw_4XX_Base) }, { 0, omit }, - "TP_MI_BGCF_480TEMPAV_01", + "TP_MI_ECSCF_EMC_487INVITE_01", true, p_checkMessage ) @@ -671,8 +750,8 @@ module AtsImsIot_TP_behavior_MI { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MI_BGCF_ECO_480TEMPAV_01 + } // End of function f_mtc_check_TP_MI_ECSCF_EMC_487INVITE_01 - } // End of group imsTemporaryUnavailable + } // End of group imsRequestTermination } // End of module AtsImsIot_TP_behavior_MI \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ML.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ML.ttcn index 911d621b20036c37766e90652b6b972284b18c15..2cc6b3a314a702c8625b497d3822e1de8c2c0eda 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ML.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ML.ttcn @@ -108,44 +108,6 @@ module AtsImsIot_TP_behavior_ML { } } // End of function f_mtc_check_TP_ML_ECSCF_ECO_INVITE_01 - function f_mtc_check_TP_ML_ECSCF_ECO_INVITE_02( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - out SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); - var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); - - // Check the INVITE - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_ML_ECSCF_INVITE_01( - -, // FIXME Set expected value - ( - mw_From_NameAddr_SipUrl({quotedString:=v_psapInfo.publicId}, v_psapInfo.publicId, v_psapInfo.domain), - mw_From_AddrUnion_TelUrl(v_psapInfo.publicId) - ), - ( - mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/), - mw_To_AddrUnion_TelUrl(-)//v_userInfoA.publicId - ) - )) - }, - { mw_SipRequest(mw_INVITE_Request_Base) }, - {0, omit}, - "TP_ML_ECSCF_ECO_INVITE_01 - Request", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - // Retrieve messge - f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); - log("##### p_sip: ", p_sip); - } - } // End of function f_mtc_check_TP_ML_ECSCF_ECO_INVITE_02 - } // End of group imsInvite group ims3xxx { diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MM.ttcn index 8b7b62eebdf7625b3d9bde92e8502fe53836adb6..c05225780dd82c2f8ca4beb5dd0bb9bca1ea65a9 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MM.ttcn @@ -33,40 +33,40 @@ module AtsImsIot_TP_behavior_MM { /** * @desc "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the PSAP in the IM CN subsystem of own network." - * Reference - * "ETSI TS 124 229 [1], Clauses 5.11.2" - * Config Id CF_VxLTE_INT - * PICS Selection NONE - * Initial conditions with { - * the IMS_E_CSCF entity supportsRoutingTo the IM_CN - * } - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF entity receives an INVITE containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_P_CSCF_A_VIA, - * Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed - * PAssertedIdentity, - * MessageBody; - * from the IMS_P_CSCF_A entity - * } - * then { - * the IMS_E_CSCF entity sends an INVITE containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_E_CSCF_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE_IM_CN, - * RecordRoute PX_E_CSCF_SERVICE_ROUTE, - * PChargingVector, - * MessageBody; - * to the IM_CN entity - * } - * } - */ + * Reference + * "ETSI TS 124 229 [1], Clauses 5.11.2" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN + * } + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF entity receives an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_P_CSCF_A_VIA, + * Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + * PAssertedIdentity, + * MessageBody; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_E_CSCF entity sends an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_E_CSCF_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE_IM_CN, + * RecordRoute PX_E_CSCF_SERVICE_ROUTE, + * PChargingVector, + * MessageBody; + * to the IM_CN entity + * } + * } + */ function f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -87,7 +87,7 @@ module AtsImsIot_TP_behavior_MM { }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, - "TP_MM_ECSCF_INVITE_01 - Request", + "TP_MM_ECSCF_ECO_INVITE_01 - Request", true, p_checkMessage ) @@ -99,6 +99,39 @@ module AtsImsIot_TP_behavior_MM { } } // End of function f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01 + /** + * @desc "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the PSAP in the IM CN subsystem of own network and includes the LRF provided URI in the Route header." + * Reference + * "ETSI TS 124 229 [1], Clauses 5.11.2" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the IMS_LRF and + * the IMS_E_CSCF entity hasSentINVITETo the IMS_LRF and + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN + * } + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF entity receives an r_3xx_Any containing + * Contact indicating value LRF_provided_SIP_URI; + * from the IMS_LRF entity + * } + * then { + * the IMS_E_CSCF entity sends an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_E_CSCF_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE_IM_CN, + * RecordRoute PX_E_CSCF_SERVICE_ROUTE, + * not PChargingFunctionAddresses, + * PChargingVector, + * MessageBody; + * to the IM_CN entity + * } + * } + */ function f_mtc_check_TP_MM_ECSCF_ECO_INVITE_02( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -111,7 +144,7 @@ module AtsImsIot_TP_behavior_MM { // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MM_ECSCF_INVITE_01( + { mw_SipRequest(mw_TP_MM_ECSCF_INVITE_02( -, // FIXME Set expected value mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId @@ -119,7 +152,7 @@ module AtsImsIot_TP_behavior_MM { }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, - "TP_MM_ECSCF_INVITE_01 - Request", + "TP_MM_ECSCF_ECO_INVITE_02 - Request", true, p_checkMessage ) @@ -131,31 +164,79 @@ module AtsImsIot_TP_behavior_MM { } } // End of function f_mtc_check_TP_MM_ECSCF_ECO_INVITE_02 - } // End of group imsInvite - - group ims100Trying { - /** - * @desc Verify that the E-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg). + * @desc "Verify that the E-CSCF successfully processes an callback INVITE from PSAP over the IM CN subsystem of own network and routes the request to the P-CSCF." + * Reference + * "ETSI TS 124 229 [1], Clauses 5.11.2" + * Config Id CF_VxLTE_INT + * PICS Selection NONE * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN * } - * * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 100_Trying - * from the PSAP entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 100_Trying - * to the IMS_P_CSCF_A entity + * ensure that { + * when { + * the IMS_E_CSCF entity receives an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_P_CSCF_A_VIA, + * Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + * PAssertedIdentity, + * MessageBody; + * from the IM_CN entity + * } + * then { + * the IMS_E_CSCF entity sends an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_E_CSCF_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE_IM_CN, + * RecordRoute PX_E_CSCF_SERVICE_ROUTE, + * not PChargingFunctionAddresses, + * PChargingVector, + * MessageBody; + * to the IMS_P_CSCF_A entity * } * } - */ + */ + function f_mtc_check_TP_MM_ECSCF_ECO_INVITE_03( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MM_ECSCF_INVITE_03( + -, // FIXME Set expected value + mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId + mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MM_ECSCF_ECO_INVITE_03 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_MM_ECSCF_ECO_INVITE_03 + + } // End of group imsInvite + + group ims100Trying { + function f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -186,39 +267,6 @@ module AtsImsIot_TP_behavior_MM { group ims180Ringing { - /** - * @desc Verify that the IMS_E_CSCF_A successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 180_Ringing containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * from the PSAP entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 180_Ringing containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * to the IMS_P_CSCF_A entity - * } - * } - */ function f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -251,39 +299,6 @@ module AtsImsIot_TP_behavior_MM { group ims183SessionProgress { - /** - * @desc Verify that the IMS_E_CSCF_A successfully processes a 183 (Ringing) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 183_SessionProgress containing - * From indicating value PX_SAP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_SAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * from the PSAP entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 183_SessionProgress containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * to the IMS_P_CSCF_A entity - * } - * } - */ function f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -314,45 +329,6 @@ module AtsImsIot_TP_behavior_MM { group ims200Ok { - /** - * @desc Verify that the IMS_E_CSCF_A successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 200_Ok containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * ; - * from the PSAP entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 200_Ok containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE, - * PChargingVector, - * PChargingFunctionAddresses, - * PPreferredIdentity - * ; - * to the IMS_P_CSCF_A entity - * } - * } - */ function f_mtc_check_TP_MM_ECSCF_ECO_200OK_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -391,21 +367,51 @@ module AtsImsIot_TP_behavior_MM { group imsAck { + function f_mtc_check_TP_MM_ECSCF_ECO_ACK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MM_ECSCF_ACK_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MM_ECSCF_ECO_ACK_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MM_ECSCF_ECO_ACK_01 + + } // End of group imsAck + + group imsBye { + /** - * @desc Verify that the IMS_E_CSCF_A successfully processes a ACK provisional response on initial INVITE (Originating Leg). + * @desc Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency Call and routes the request to the PSAP in the IM CN subsystem of own network * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP * } * * Expected behaviour * ensure that { * when { - * the IMS_E_CSCF_A entity receives an ACK containing + * the IMS_E_CSCF_A entity receives a BYE containing * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_PSAP_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE @@ -413,93 +419,83 @@ module AtsImsIot_TP_behavior_MM { * from the IMS_P_CSCF_A entity * } * then { - * the IMS_E_CSCF_A entity sends an ACK containing + * the IMS_E_CSCF_A entity sends a BYE containing * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_PSAP_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE - * ; - * from the PSAP entity + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * to the IM_CN entity * } * } */ - function f_mtc_check_TP_MM_ECSCF_ECO_ACK_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MM_ECSCF_ECO_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - // Check the ACK + // Check the BYE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MM_ECSCF_ACK_01( + { mw_SipRequest(mw_TP_MM_ECSCF_BYE_01( p_sip.request.msgHeader.callId, - p_sip.request.msgHeader.cSeq, + -, // New CSeq, -, // FIXME To be set p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField )) }, - { mw_SipRequest(mw_ACK_Request_Base) }, + { mw_SipRequest(mw_BYE_Request_Base) }, { 0, omit }, - "TP_MM_ECSCF_ACK_01 - Request", - false, + "TP_MM_ECSCF_ECO_BYE_01 - Request", + true, p_checkMessage ) ); p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MM_ECSCF_ECO_ACK_01 - - } // End of group imsAck - - group imsBye { - + } // End of function f_mtc_check_TP_MM_ECSCF_ECO_BYE_01 + /** - * @desc Verify that the E-CSCF successfully processes a BYE (Terminating Leg). + * @desc Verify that the E-CSCF successfully processes a BYE from the PSAP in the IM CN subsystem for an Emergency Call and routes the request to the P-CSCF of home network * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B and - * the UE_A entity previouslyEstablishedCallWith the UE_B + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP * } * * Expected behaviour * ensure that { * when { * the IMS_E_CSCF_A entity receives a BYE containing - * From indicating value PX_UE_B_SIP_URI, + * From indicating value PX_PSAP_SIP_URI, * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE - * ; - * from the IMS_P_CSCF_A entity + * CallId indicating value PX_PSAP_SIP_URI, + * Via indicating value PX_PSAP_VIA; + * from the IM_CN entity * } * then { * the IMS_E_CSCF_A entity sends a BYE containing - * From indicating value PX_UE_B_SIP_URI, + * From indicating value PX_PSAP_SIP_URI, * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE - * ; - * from the PSAP entity + * CallId indicating value PX_PSAP_SIP_URI, + * Via indicating value PX_PSAP_VIA; + * to the IMS_P_CSCF_A entity * } * } */ - function f_mtc_check_TP_MM_ECSCF_ECO_BYE_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - inout SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MM_ECSCF_ECO_BYE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the BYE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MM_ECSCF_BYE_01( + { mw_SipRequest(mw_TP_MM_ECSCF_BYE_02( p_sip.request.msgHeader.callId, -, // New CSeq, -, // FIXME To be set @@ -517,7 +513,7 @@ module AtsImsIot_TP_behavior_MM { }, { mw_SipRequest(mw_BYE_Request_Base) }, { 0, omit }, - "TP_MM_ECSCF_BYE_01 - Request", + "TP_MM_ECSCF_ECO_BYE_02 - Request", true, p_checkMessage ) @@ -526,64 +522,27 @@ module AtsImsIot_TP_behavior_MM { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MM_ECSCF_ECO_BYE_01 + } // End of function f_mtc_check_TP_MM_ECSCF_ECO_BYE_02 } // End of group imsBye group ims200OkBye { - /** - * @desc Verify that the E-CSCF successfully processes a 200 (OK) BYE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity sends a 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, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * to the PSAP entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 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, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * to the IMS_P_CSCF_A entity - * } - * } - */ function f_mtc_check_TP_MM_ECSCF_ECO_200OK_BYE_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 200 OK BYE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK( - p_sip.request.msgHeader.cSeq, - p_sip.request.msgHeader.callId, - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField - )) + { mw_SipResponse(mw_ECO_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) }, { mw_SipResponse(mw_200OK_Base) }, { 0, omit }, @@ -600,7 +559,36 @@ module AtsImsIot_TP_behavior_MM { group imsCancel { - function f_mtc_check_TP_MM_ECSCF_ECO_CANCEL_01( + /** + * @desc Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency Call under establishment and routes the request to the PSAP in the IM CN subsystem of own network + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN and + * the UE_A entity hasAchievedInitialEmergencyINVITE + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_P_CSCF_A entity + * } + * then { + * the IMS_E_CSCF_A entity sends a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * to the IM_CN entity + * } + * } + */ + function f_mtc_check_TP_MM_ECSCF_EMC_CANCEL_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, inout SipMessage p_sip @@ -610,24 +598,16 @@ module AtsImsIot_TP_behavior_MM { p_monitorCompRef.start( f_Iot_Sip_receive( { mw_SipRequest(mw_TP_MM_ECSCF_CANCEL_01( - p_sip.request.msgHeader.callId, - -, // New CSeq, - -, // FIXME To be set - { - fieldName := FROM_E, - addressField := p_sip.request.msgHeader.toField.addressField, - fromParams := * - }, //p_sip.request.msgHeader.fromField, - { - fieldName := TO_E, - addressField := p_sip.request.msgHeader.fromField.addressField, - toParams := * - } //p_sip.request.msgHeader.toField - )) + p_sip.request.msgHeader.callId, + -, // New CSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) }, { mw_SipRequest(mw_CANCEL_Request_Base) }, { 0, omit }, - "TP_MM_ECSCF_CANCEL_01 - Request", + "TP_MM_ECSCF_EMC_CANCEL_01 - Request", true, p_checkMessage ) @@ -636,13 +616,42 @@ module AtsImsIot_TP_behavior_MM { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MM_ECSCF_ECO_CANCEL_01 + } // End of function f_mtc_check_TP_MM_ECSCF_EMC_CANCEL_01 } // End of group imsCancel group imsRequestTermination { - function f_mtc_check_TP_MM_ECSCF_ECO_487INVITE_01( + /** + * @desc Verify that the E-CSCF successfully processes a 487 response from the PSAP in the IM CN subsystem for an Emergency Call and routes the response to the P-CSCF of home network + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a 487INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * from the IM_CN entity + * } + * then { + * the IMS_E_CSCF_A entity sends a 480INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MM_ECSCF_EMC_487INVITE_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, inout SipMessage p_sip @@ -666,7 +675,7 @@ module AtsImsIot_TP_behavior_MM { mw_SipResponse(mdw_4XX_Base) }, { 0, omit }, - "TP_MM_ECSCF_487INVITE_01", + "TP_MM_ECSCF_EMC_487INVITE_01", true, p_checkMessage ) @@ -675,13 +684,42 @@ module AtsImsIot_TP_behavior_MM { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MM_ECSCF_ECO_487INVITE_01 + } // End of function f_mtc_check_TP_MM_ECSCF_EMC_487INVITE_01 } // End of group imsRequestTermination group imsTemporaryUnavailable { - function f_mtc_check_TP_MM_ECSCF_ECO_480TEMPAV_01( + /** + * @desc Verify that the E-CSCF successfully processes a 480 response from the PSAP in the IM CN subsystem for an Emergency Call and routes the response to the P-CSCF of home network + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a 480INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * from the IM_CN entity + * } + * then { + * the IMS_E_CSCF_A entity sends a 480INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MM_ECSCF_ECO_480INVITE_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, inout SipMessage p_sip @@ -697,7 +735,7 @@ module AtsImsIot_TP_behavior_MM { mw_SipResponse(mdw_4XX_Base) }, { 0, omit }, - "TP_MM_ECSCF_480TEMPAV_01", + "TP_MM_ECSCF_ECO_480INVITE_01", true, p_checkMessage ) @@ -706,7 +744,7 @@ module AtsImsIot_TP_behavior_MM { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MM_ECSCF_ECO_480TEMPAV_01 + } // End of function f_mtc_check_TP_MM_ECSCF_ECO_480INVITE_01 } // End of group imsTemporaryUnavailable diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EB.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EB.ttcn deleted file mode 100644 index eaf605c1c727e68554e84946b47bff46bf4a7044..0000000000000000000000000000000000000000 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EB.ttcn +++ /dev/null @@ -1,841 +0,0 @@ -/** - * @author TTF T010 - * @version $Id$ - * @desc This module provides the TP behaviour functions at Mw interface at E-CSCF/IBCF - */ - -module AtsImsIot_TP_behavior_MW_EB { - - // LibIms - import from LibIms_Templates all; - import from LibIms_UpperTester all; - // LibIot - import from LibIot_TypesAndValues all; - import from LibIot_Functions all; - import from LibIot_TestInterface all; - import from LibIot_PIXITS all; - // LibSip - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - import from LibSip_Common all; - import from LibSip_SDPTypes all; - // LibMsrp - import from LibMsrp_TypesAndValues all; - import from LibMsrp_Functions all; - import from LibMsrp_Templates all; - // AtsImsIot - import from AtsImsIot_TestSystem all; - import from AtsImsIot_Templates_MW all; - import from AtsImsIot_Templates all; - import from AtsImsIot_TypesAndValues all; - import from AtsImsIot_Functions all; - - group imsInvite { - - /** - * @desc Verify that the E-CSCF successfully processes an initial INVITE (Originating Leg).. - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives an INVITE containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_PSAP_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_P_CSCF_A entity - * } - * then { - * the IMS_E_CSCF_A entity sends an INVITE containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_PSAP_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" - * ; - * ;; - * to the IMS_IBCF_A entity - * } - * } - */ - function f_mtc_check_TP_MW_IBCF_INVITE_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A); - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest( - mdw_TP_MW_IBCF_INVITE_01( - ( - mw_SipUrl_Host(v_EUT_A_Addr) //f_GetEUTScscfIpAddress(PX_EUT_A) - ) - )) - }, - { mw_SipRequest(mw_INVITE_Request_Base) }, - {0, omit}, - "TP_MW_IBCF_INVITE_01 - Request", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_MW_IBCF_INVITE_01 - - function f_mtc_check_TP_MW_IBCF_INVITE_02( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A); - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipRequest( - mdw_TP_MW_IBCF_INVITE_01( - ( - mw_SipUrl_Host(v_EUT_A_Addr) //f_GetEUTScscfIpAddress(PX_EUT_A) - ) - )) - }, - { mw_SipRequest(mw_INVITE_Request_Base) }, - {0, omit}, - "TP_MW_IBCF_INVITE_01 - Request", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_MW_IBCF_INVITE_02 - - } // End of group imsInvite - - group ims100Trying { - - /** - * @desc Verify that the E-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 100_Trying - * from the IMS_IBCF_A entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 100_Trying - * to the IMS_P_CSCF_A entity - * } - * } - */ - function f_mtc_check_TP_MW_IBSCF_100Trying_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the 100 TRYING - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MW_IBCF_100Trying_01( - p_sip.request.msgHeader.cSeq, - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField - )) - }, - { mw_SipResponse(mw_100Trying_Base) }, - { 0, omit }, - "TP_MW_IBCF_100Trying_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_MW_IBSCF_100Trying_01 - - } // End of group ims100Trying - - group ims180Ringing { - - /** - * @desc Verify that the E-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 180_Ringing containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * from the IMS_IBCF_A entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 180_Ringing containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * to the IMS_P_CSCF_A entity - * } - * } - */ - function f_mtc_check_TP_MW_IBCF_180RINGING_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the 180 RINGING - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MW_IBCF_180Ringing_01( - p_sip.request.msgHeader.cSeq, - p_sip.request.msgHeader.fromField, - mw_To_NameAddr_TelUrl( - -, - p_sip.request.msgHeader.toField.addressField.addrSpecUnion.components.tel.subscriber - ))) - }, - { mw_SipResponse(mw_180Ringing_Base) }, - { 0, omit }, - "TP_MW_IBCF_180RINGING_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_MW_IBCF_180RINGING_01 - - } // End of group ims180Ringing - - group ims183SessionProgress { - - /** - * @desc Verify that the E-CSCF successfully processes a 183 (Ringing) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 183_SessionProgress containing - * From indicating value PX_SAP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_SAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * from the IMS_IBCF_A entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 183_SessionProgress containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * to the IMS_P_CSCF_A entity - * } - * } - */ - function f_mtc_check_TP_MW_IBCF_183SESSION_PROGRESS_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the 183 SESSION_PROGRESS - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MW_IBCF_183SessionProgress_01( - p_sip.request.msgHeader.cSeq, - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField - )) - }, - { mw_SipResponse(mw_183SessionProgress_Base) }, - { 0, omit }, - "TP_MW_IBCF_183SESSION_PROGRESS_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_MW_IBCF_183SESSION_PROGRESS_01 - - } // End of group ims183SessionProgress - - group ims200Ok { - - /** - * @desc Verify that the E-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 200_Ok containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * ; - * from the IMS_IBCF_A entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 200_Ok containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE, - * PChargingVector, - * PChargingFunctionAddresses, - * PPreferredIdentity - * ; - * to the IMS_P_CSCF_A entity - * } - * } - */ - function f_mtc_check_TP_MW_IBCF_200OK_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the 200 OK - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK( - p_sip.request.msgHeader.cSeq, - p_sip.request.msgHeader.callId, - p_sip.request.msgHeader.fromField, - ( - mw_To_NameAddr_TelUrl({quotedString:=f_getSipUserId(PX_EUT_B).publicId}), - mw_To_AddrUnion_TelUrl(f_getTelUserId(PX_EUT_B).publicId), - p_sip.request.msgHeader.toField - ) - )) - }, - { mw_SipResponse(mw_200OK_Base) }, - { 0, omit }, - "TP_MW_IBCF_200OK_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } - } // End of function f_mtc_check_TP_MW_IBCF_200OK_01 - - function f_mtc_check_TP_MW_IBCF_ECO_200OK_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the 200 OK - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK( - p_sip.request.msgHeader.cSeq, - p_sip.request.msgHeader.callId, - p_sip.request.msgHeader.fromField, - ( - mw_To_NameAddr_TelUrl({quotedString:=f_getSipUserId(PX_PSAP).publicId}), - mw_To_AddrUnion_TelUrl(f_getTelUserId(PX_PSAP).publicId), - p_sip.request.msgHeader.toField - ) - )) - }, - { mw_SipResponse(mw_200OK_Base) }, - { 0, omit }, - "TP_MW_IBCF_200OK_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - - } - } // End of function f_mtc_check_TP_MW_IBCF_ECO_200OK_01 - - /** - * @desc Verify that the E-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a 200_Ok containing - * From indicating value PX_UE_B_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE, - * PChargingVector, - * PChargingFunctionAddresses, - * PPreferredIdentity - * ; - * from the UE_B entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 200_Ok containing - * From indicating value PX_UE_B_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * ; - * from the IMS_P_CSCF_B entity - * } - * } - */ - function f_mtc_check_TP_MW_IBCF_200OK_02( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the 200 OK - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK( - p_sip.request.msgHeader.cSeq, - p_sip.request.msgHeader.callId, - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField - )) - }, - { mw_SipResponse(mw_200OK_Base) }, - { 0, omit }, - "TP_MW_IBCF_200OK_02", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_MW_IBCF_200OK_02 - - } // End of group ims200Ok - - group imsAck { - - /** - * @desc Verify that the E-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives an ACK containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_PSAP_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_P_CSCF_A entity - * } - * then { - * the IMS_E_CSCF_A entity sends an ACK containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_PSAP_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_IBCF_A entity - * } - * } - */ - function f_mtc_check_TP_MW_IBCF_ACK_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the ACK - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_IBCF_ACK_01( - p_sip.request.msgHeader.callId, - p_sip.request.msgHeader.cSeq, - -, // FIXME To be set - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField - )) - }, - { mw_SipRequest(mw_ACK_Request_Base) }, - { 0, omit }, - "TP_MW_IBCF_ACK_01 - Request", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_MW_IBCF_ACK_01 - - function f_mtc_check_TP_MW_IBCF_ECO_ACK_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the ACK - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_IBCF_ACK_01( - p_sip.request.msgHeader.callId, - p_sip.request.msgHeader.cSeq, - -, // FIXME To be set - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField - )) - }, - { mw_SipRequest(mw_ACK_Request_Base) }, - { 0, omit }, - "TP_MW_IBCF_ACK_01 - Request", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_MW_IBCF_ACK_01 - - } // End of group imsAck - - group imsBye { - - /** - * @desc Verify that the E-CSCF successfully processes a BYE (Terminating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B and - * the UE_A entity previouslyEstablishedCallWith the UE_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity receives a BYE containing - * From indicating value PX_UE_B_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE - * ; - * from the IMS_P_CSCF_A entity - * } - * then { - * the IMS_E_CSCF_A entity sends a BYE containing - * From indicating value PX_UE_B_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_UE_B_CALLID, - * Via indicating value PX_UE_B_VIA, - * Route indicating value PX_UE_B_SERVICE_ROUTE - * ; - * from the IMS_IBCF_A entity - * } - * } - */ - function f_mtc_check_TP_MW_IBCF_BYE_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - inout SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the BYE - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_IBCF_BYE_01( - p_sip.request.msgHeader.callId, - -, // New CSeq, - -, // FIXME To be set - { - fieldName := FROM_E, - addressField := p_sip.request.msgHeader.toField.addressField, - fromParams := * - }, //p_sip.request.msgHeader.fromField, - { - fieldName := TO_E, - addressField := p_sip.request.msgHeader.fromField.addressField, - toParams := * - } //p_sip.request.msgHeader.toField - )) - }, - { mw_SipRequest(mw_BYE_Request_Base) }, - { 0, omit }, - "TP_MW_IBCF_BYE_01 - Request", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - // Retrieve messge - f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); - } - } // End of function f_mtc_check_TP_MW_IBCF_BYE_01 - - function f_mtc_check_TP_MW_IBCF_ECO_BYE_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - inout SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the BYE - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_IBCF_BYE_01( - p_sip.request.msgHeader.callId, - -, // New CSeq, - -, // FIXME To be set - { - fieldName := FROM_E, - addressField := p_sip.request.msgHeader.toField.addressField, - fromParams := * - }, //p_sip.request.msgHeader.fromField, - { - fieldName := TO_E, - addressField := p_sip.request.msgHeader.fromField.addressField, - toParams := * - } //p_sip.request.msgHeader.toField - )) - }, - { mw_SipRequest(mw_BYE_Request_Base) }, - { 0, omit }, - "TP_MW_IBCF_BYE_01 - Request", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - // Retrieve messge - f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); - } - } // End of function f_mtc_check_TP_MW_IBCF_ECO_BYE_01 - - } // End of group imsBye - - group ims200OkBye { - - /** - * @desc Verify that the E-CSCF successfully processes a 200 (OK) BYE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_E_CSCF_A entity sends a 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, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * to the IMS_IBCF_A entity - * } - * then { - * the IMS_E_CSCF_A entity sends a 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, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * to the IMS_P_CSCF_A entity - * } - * } - */ - function f_mtc_check_TP_MW_IBCF_200OK_BYE_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the 200 OK BYE - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK( - p_sip.request.msgHeader.cSeq, - p_sip.request.msgHeader.callId, - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField - )) - }, - { mw_SipResponse(mw_200OK_Base) }, - { 0, omit }, - "TP_MW_IBCF_200OK_BYE_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_MW_IBCF_200OK_BYE_01 - - } // End of group ims200OkBye - - group imsCancel { - - function f_mtc_check_TP_MW_IBCF_ECO_CANCEL_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - inout SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the CANCEL - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_IBCF_CANCEL_01( - p_sip.request.msgHeader.callId, - -, // New CSeq, - -, // FIXME To be set - { - fieldName := FROM_E, - addressField := p_sip.request.msgHeader.toField.addressField, - fromParams := * - }, //p_sip.request.msgHeader.fromField, - { - fieldName := TO_E, - addressField := p_sip.request.msgHeader.fromField.addressField, - toParams := * - } //p_sip.request.msgHeader.toField - )) - }, - { mw_SipRequest(mw_CANCEL_Request_Base) }, - { 0, omit }, - "TP_MW_IBCF_CANCEL_01 - Request", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - // Retrieve messge - f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); - } - } // End of function f_mtc_check_TP_MW_IBCF_ECO_CANCEL_01 - - } // End of group imsCancel - - group ims487Invite { - - function f_mtc_check_TP_MW_IBCF_ECO_487INVITE_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - inout SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A); - p_monitorCompRef.start( - f_Iot_Sip_receive( - { - mw_SipResponse( - mw_487RequestTerminated( // TODO Enforce template - p_sip.request.msgHeader.callId, - -, // New CSeq - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField, - omit - ) - ) - }, - { - mw_SipResponse(mdw_4XX_Base) - }, - { 0, omit }, - "TP_MW_IBCF_487INVITE_01", - true, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_MW_IBCF_ECO_487INVITE_01 - - } // End of group ims487Invite - -} // End of module AtsImsIot_TP_behavior_MW_EB \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn index e72bdfaabddb5cb0adbba2b4eec4925698bbc7dd..d9ae0d3af695e01068250e92fa2826406a9b1cd4 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn @@ -193,9 +193,8 @@ module AtsImsIot_TP_behavior_MW_IS { /** * @desc Verify that the I-CSCF successfully processes a first registration (Successful). * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_A entity isNotRegisteredTo the IMS_A and - * the UE_B entity isNotRegisteredTo the IMS_B + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity not isRegisteredTo the IMS_A * } * * Expected behaviour @@ -206,7 +205,7 @@ module AtsImsIot_TP_behavior_MW_IS { * 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 "sos"; * from the IMS_P_CSCF_A entity * } * then { @@ -236,7 +235,7 @@ module AtsImsIot_TP_behavior_MW_IS { in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); var SipMessage v_sip; // Check the first REGISTER @@ -282,7 +281,7 @@ module AtsImsIot_TP_behavior_MW_IS { )) }, {0, omit}, - "TP_MW_ICSCF_REGISTER_01 - 401 Unauthorized", + "TP_MW_ICSCF_ECO_REGISTER_01 - 401 Unauthorized", false, p_checkMessage ) @@ -400,12 +399,58 @@ module AtsImsIot_TP_behavior_MW_IS { } } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_02 + /** + * @desc Verify that the I-CSCF successfully processes a full registration (Successful). + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity not isRegisteredTo the IMS_A and + * the UE_A entity hasAchievedFirstREGISTER + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_I_CSCF_A 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, + * Authorization containing + * Authentication_Scheme indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth";, + * Contact indicating value "sos"; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_I_CSCF_A entity sends an 401_Unauthorized 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, + * AuthenticationInfo, + * PAccessNetworkInfo, + * PAssociatedURI indicating value PX_UE_A_SIP_URI, + * PChargingVector, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA" , + * term_ioi_parameter + * indicating value "Operator Identifier Of ImsB";, + * Path, + * ServiceRoute; + * to the IMS_S_CSCF_A entity + * } + * } + */ function f_mtc_check_TP_MW_ICSCF_ECO_REGISTER_02( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); var SipMessage v_sip; // Check the first REGISTER @@ -559,9 +604,9 @@ module AtsImsIot_TP_behavior_MW_IS { /** * @desc Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful). * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isEmergencyAttachedTo the EPC_A and * the UE_A entity isNotRegisteredTo the IMS_A and - * the UE_B entity isNotRegisteredTo the IMS_B + * the UE_A entity hasAchievedFirstREGISTER * } * * Expected behaviour @@ -572,20 +617,11 @@ module AtsImsIot_TP_behavior_MW_IS { * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, - * Authorization containing - * Authentication_Schema indicating value PX_TO_BE_DEFINED, - * Authentication_URI indicating value PX_TO_BE_DEFINED, - * Username indicating value PX_UE_A_INVALID_USERNAME, - * Realm indicating value PX_UE_A_REALM, - * Algorithm indicating value PX_UE_A_AUTH_ALG, - * Nonce indicating value "not empty", - * qop indicating value "auth", - * not SecurityClient - * ;; + * Authorization indicating value "invalid credentials"; * from the IMS_P_CSCF_A entity * } * then { - * the IMS_I_CSCF_A entity sends an 404_NotFound containing + * the IMS_I_CSCF_A entity sends an 403_Forbiden containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_A_CALLID @@ -599,7 +635,7 @@ module AtsImsIot_TP_behavior_MW_IS { in boolean p_checkMessage := true ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); // User removed from HSS + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); // User removed from HSS var SipMessage v_sip; // Check the first REGISTER @@ -610,7 +646,7 @@ module AtsImsIot_TP_behavior_MW_IS { mw_TP_MW_ICSCF_ECO_REGISTER_03( mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_Authorization_other/*(mw_credentialIntegrityYes)*/ + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ // FIXME indicating value "Invalid credentials" ) ) }, @@ -618,7 +654,7 @@ module AtsImsIot_TP_behavior_MW_IS { mw_SipRequest(mw_REGISTER_Request_Base) }, {0, omit}, - "TP_MW_ICSCF_REGISTER_03 - First request", + "TP_MW_ICSCF_ECO_REGISTER_03 - First request", true, p_checkMessage ) @@ -629,11 +665,11 @@ module AtsImsIot_TP_behavior_MW_IS { if (not(isbound(v_sip))) { return; } - // Check REGISTER 404 Not Found response + // Check REGISTER 403 Forbidden response p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), + mw_SipResponse(mw_403Forbidden(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) }, { @@ -643,7 +679,7 @@ module AtsImsIot_TP_behavior_MW_IS { )) }, {0, omit}, - "TP_MW_ICSCF_REGISTER_03 - 404 Not Found", + "TP_MW_ICSCF_REGISTER_04 - 403 Firbidden", false, p_checkMessage ) @@ -652,6 +688,178 @@ module AtsImsIot_TP_behavior_MW_IS { } } // End of function f_mtc_check_TP_MW_ICSCF_ECO_REGISTER_03 + /** + * @desc Verify that the I-CSCF processes an invalid first registration in visited network and sends 403 response (Unsuccessful). + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_I_CSCF_A 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, + * Authorization indicating value "invalid credentials"; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_I_CSCF_A entity sends an 403_Forbiden containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID + * ; + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_ICSCF_ECO_REGISTER_04( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); // User removed from HSS + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_ICSCF_ECO_REGISTER_03( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ // FIXME indicating value "Invalid credentials" + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_ICSCF_ECO_REGISTER_04 - First request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 402 Forbidden response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_403Forbidden(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), + mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + }, + { + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_MW_ICSCF_REGISTER_04 - 403 Firbidden", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_ICSCF_ECO_REGISTER_04 + + /** + * @desc Verify that the I-CSCF processes an invalid first registration without SecurityClient header in visited network(GIBA supported) and sends 420 response (Unsuccessful). + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_I_CSCF_A 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, + * Authorization indicating value "invalid credentials"; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_I_CSCF_A entity sends an 420_BadExtension containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_A_CALLID + * ; + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_ICSCF_ECO_REGISTER_05( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := true + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); // User removed from HSS + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_ICSCF_ECO_REGISTER_03( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other/*(mw_credentialIntegrityYes)*/ // FIXME indicating value "Invalid credentials" + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_ICSCF_ECO_REGISTER_05 - First request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 420 Bad Extension response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_420BadExtension(v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)), + mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq, mw_WwwAuthenticate)) + }, + { + mw_SipResponse(mw_Response_4xx_Base( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq + )) + }, + {0, omit}, + "TP_MW_ICSCF_REGISTER_04 - 403 Firbidden", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_ICSCF_ECO_REGISTER_05 + function f_mtc_check_TP_MW_ICSCF_REGISTER_04( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := true diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index ab66af68f56239e743bd111e628c643eaee24579..de0726286b666076b68dee432c1c7b5d6dc4eca8 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -216,11 +216,10 @@ module AtsImsIot_TP_behavior_MW_PS { } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_01 /** - * @desc Verify that the P-CSCF successfully processes a first registration (Successful). + * @desc Verify that the P-CSCF successfully processes a first emergency registration (Successful) * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_A entity isNotRegisteredTo the IMS_A and - * the UE_B entity isNotRegisteredTo the IMS_B + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity not isRegisteredTo the IMS_A * } * * Expected behaviour @@ -231,7 +230,7 @@ module AtsImsIot_TP_behavior_MW_PS { * 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 "sos";; * from the UE_A entity * } * then { @@ -240,13 +239,14 @@ module AtsImsIot_TP_behavior_MW_PS { * To indicating value PX_UE_A_SIP_URI, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, + * Path, * PChargingVector containing * icid indicating value PX_TO_BE_DEFINED, - * PVisitedNetworkID indicating value PX_TO_BE_DEFINED, - * Require_HDR indicating value "path", - * Supported indicating value "path" - * ;; - * to the IMS_I_CSCF_A entity + * PVisitedNetworkID indicating value PX_TO_BE_DEFINED, + * Require indicating value "path", + * Supported indicating value "path", + * Contact indicating value "sos";; + * to the IMS_I_CSCF_A entity * and the IMS_P_CSCF_A entity sends an 401_Unauthorized containing * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_UE_A_SIP_URI, @@ -260,10 +260,7 @@ module AtsImsIot_TP_behavior_MW_PS { * Realm indicating value PX_UE_A_REALM, * Algorithm indicating value PX_UE_A_AUTH_ALG, * Nonce indicating value "not empty", - * qop indicating value "auth" - * ;, - * Contact indicating value "sos" - * ; + * qop indicating value "auth";; * to the UE_A entity * } * } @@ -273,7 +270,7 @@ module AtsImsIot_TP_behavior_MW_PS { in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); var SipMessage v_sip; // Check first REGISTER request @@ -294,7 +291,7 @@ module AtsImsIot_TP_behavior_MW_PS { mw_SipRequest(mw_REGISTER_Request_Base) }, {0, omit}, - "TP_MW_PCSCF_REGISTER_01 - First request", + "TP_MW_PCSCF_ECO_REGISTER_01 - First request", true, p_checkMessage ) @@ -453,12 +450,75 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_02 + /** + * @desc Verify that the P-CSCF successfully processes a full emergency registration (Successful) + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity not isRegisteredTo the IMS_A and + * the UE_A entity hasAchievedFirstREGISTER + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A 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, + * Authorization containing + * Authentication_Scheme indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth", + * Contact indicating value "sos";; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends 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, + * Authorization containing + * Authentication_Scheme indicating value PX_TO_BE_DEFINED, + * Authentication_URI indicating value PX_TO_BE_DEFINED, + * Username indicating value PX_UE_A_USERNAME, + * Realm indicating value PX_UE_A_REALM, + * Algorithm indicating value PX_UE_A_AUTH_ALG, + * Nonce indicating value "not empty", + * qop indicating value "auth", + * PChargingVector, + * Contact indicating value "sos";; + * to the IMS_I_CSCF_A entity + * and the IMS_P_CSCF_A entity sends an 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, + * AuthenticationInfo, + * PAccessNetworkInfo, + * PAssociatedURI indicating value PX_UE_A_SIP_URI, + * PChargingVector, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA" , + * term_ioi_parameter + * indicating value "Operator Identifier Of ImsB" + * Path, + * ServiceRoute; + * to the UE_A entity + * } + * } + */ function f_mtc_check_TP_MW_PCSCF_ECO_REGISTER_02( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); var SipMessage v_sip; // Check the second REGISTER @@ -466,18 +526,18 @@ module AtsImsIot_TP_behavior_MW_PS { f_Iot_Sip_receive( { mw_SipRequest( - mw_TP_MW_PCSCF_REGISTER_02( - mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_Authorization_other - ) + mw_TP_MW_PCSCF_ECO_REGISTER_02( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other + ) ) }, { mw_SipRequest(mw_REGISTER_Request_Base) }, {0, omit}, - "TP_MW_PCSCF_REGISTER_02 - Second request", + "TP_MW_PCSCF_ECO_REGISTER_02 - Second request", true, p_checkMessage ) @@ -620,62 +680,49 @@ module AtsImsIot_TP_behavior_MW_PS { } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_03 /** - * @desc Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful). + * @desc Verify that the P-CSCF rejects invalid credentials within registration (Unsuccessful). * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_A entity isNotRegisteredTo the IMS_A and - * the UE_B entity isNotRegisteredTo the IMS_B + * the UE_A entity isAttachedTo the EPC_B and + * the UE_A entity isNotRegisteredTo the IMS_B and + * the UE_B entity isNotRegisteredTo the IMS_B and + * the UE_A entity hasAchievedFirstREGISTER * } * * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a REGISTER containing + * the IMS_P_CSCF_B 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, - * Authorization containing - * Authentication_Schema indicating value PX_TO_BE_DEFINED, - * Authentication_URI indicating value PX_TO_BE_DEFINED, - * Username indicating value PX_UE_A_INVALID_USERNAME, - * Realm indicating value PX_UE_A_REALM, - * Algorithm indicating value PX_UE_A_AUTH_ALG, - * Nonce indicating value "" - * ;; + * Authorization indicating value "invalid credentials"; * from the UE_A entity * } * then { - * the IMS_P_CSCF_A entity sends a REGISTER containing + * the IMS_P_CSCF_B entity sends 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, - * Authorization containing - * Authentication_Schema indicating value PX_TO_BE_DEFINED, - * Authentication_URI indicating value PX_TO_BE_DEFINED, - * Username indicating value PX_UE_A_INVALID_USERNAME, - * Realm indicating value PX_UE_A_REALM, - * Algorithm indicating value PX_UE_A_AUTH_ALG, - * Nonce indicating value "" - * ;; - * to the IMS_I_CSCF_A entity - * and the IMS_I_CSCF_A entity sends an 404_NotFound containing + * Authorization indicating value "invalid credentials", + * PChargingVector, + * PVisitedNetwork; + * to the IMS_I_CSCF_B entity + * and the IMS_P_CSCF_B entity sends an 403_Forbidden 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, - * ; - * to the IMS_P_CSCF_A entity + * CallId indicating value PX_UE_A_CALLID; + * to the UE_A entity * } * } */ function f_mtc_check_TP_MW_PCSCF_ECO_REGISTER_03( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false - ) runs on ImsTestCoordinator { + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); // User removed from HSS + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); // User removed from HSS var SipMessage v_sip; // Check the first REGISTER @@ -686,7 +733,7 @@ module AtsImsIot_TP_behavior_MW_PS { mw_TP_MW_PCSCF_ECO_REGISTER_01( mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), - mw_Authorization_other, + mw_Authorization_other, // FIXME indicating value "invalid credentials" -, -, mw_contact(mw_ContactAddress) ) @@ -694,7 +741,7 @@ module AtsImsIot_TP_behavior_MW_PS { }, { mw_SipRequest(mw_REGISTER_Request_Base) }, {0, omit}, - "TP_MW_PCSCF_REGISTER_03 - First request", + "TP_MW_PCSCF_ECO_REGISTER_03 - First request", true, p_checkMessage ) @@ -705,11 +752,11 @@ module AtsImsIot_TP_behavior_MW_PS { if (not(isbound(v_sip))) { return; } - // Check REGISTER 404 Not Found response + // Check REGISTER 403 Forbidden response p_monitorCompRef.start( f_Iot_Sip_receive( { - mw_SipResponse(mw_404NotFound(v_sip.request.msgHeader.cSeq/*, mw_WwwAuthenticate*/)), + mw_SipResponse(mw_403Forbidden(v_sip.request.msgHeader.cSeq/*, mw_WwwAuthenticate*/)), mw_SipResponse(mw_480TemporaryUnavailable(-, v_sip.request.msgHeader.cSeq/*, mw_WwwAuthenticate*/)) }, { @@ -1438,6 +1485,73 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_01 + /** + * @desc "Verify that the P-CSCF successfully processes an initial INVITE from an unregistered UE." + * Reference + * "ETSI TS 124 229 [1], Clauses 5.2.10.2 and 5.2.6.3.3" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity not isRegisteredTo the IMS_A and + * the UE_A entity not isEmergencyRegisteredTo the IMS_A + * } + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives an INVITE containing + * From indicating value "Anonymous", + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * MessageBody; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an INVITE containing + * From indicating value "Anonymous", + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_P_CSCF_A_VIA, + * Route indicating value PX_E_CSCF_SERVICE_ROUTE, + * MessageBody; + * to the IMS_E_CSCF entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psap := f_getTelUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_ECO_INVITE_01( + -, // FIXME Set expected value + mw_From_AddrUnion_TelUrl(mw_SipUrl_Anonymous.components.sip.userInfo.userOrTelephoneSubscriber), + mw_To_AddrUnion_TelUrl(v_psap.publicId) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_ECO_INVITE_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_01 + /** * @desc Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg). * Initial conditions with { @@ -1519,6 +1633,80 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_02 + /** + * @desc "Verify that the P-CSCF successfully processes an initial INVITE from an emergency registered UE." + * Reference + * "ETSI TS 124 229 [1], Clauses 5.2.10.2 and 5.2.6.3.3" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isEmergencyRegisteredTo the IMS_A + * } + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives an INVITE containing + * From indicating value "Anonymous", + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PPreferredIdentity, // one or two instances + * MessageBody; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an INVITE containing + * From indicating value "Anonymous", + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_P_CSCF_A_VIA, + * Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + * PAssertedIdentity, + * MessageBody; + * to the IMS_E_CSCF entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_PCSCF_ECO_INVITE_02( + -, // FIXME Set expected value + ( + mw_From_NameAddr_SipUrl({quotedString:=v_psap.publicId}, v_psap.publicId, v_psap.domain), + mw_From_AddrUnion_TelUrl(v_psap.publicId) + ), + ( + mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/), + mw_To_AddrUnion_TelUrl(-)//v_userInfoA.publicId + ) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_ECO_INVITE_02 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02 + function f_mtc_check_TP_MW_PCSCF_INVITE_03( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -1552,6 +1740,76 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_03 + /** + * @desc "Verify that the P-CSCF successfully processes an initial INVITE from a registered but not emergency registered UE." + * Reference + * "ETSI TS 124 229 [1], Clauses 5.2.10.2 and 5.2.6.3.3" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_A entity not isEmergencyRegisteredTo the IMS_A + * } + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives an INVITE containing + * From indicating value "Anonymous", + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * PPreferredIdentity, // one or two instances + * MessageBody; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an INVITE containing + * From indicating value "Anonymous", + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_P_CSCF_A_VIA, + * Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + * PAssertedIdentity, + * MessageBody; + * to the IMS_E_CSCF entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_TP_MW_PCSCF_ECO_INVITE_03( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_INVITE_ECO_03 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_03 + function f_mtc_check_TP_MW_PCSCF_INVITE_04( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -1585,6 +1843,154 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_INVITE_04 + /** + * @desc "Verify that the P-CSCF rejects an initial INVITE from a not emergency registered UE + * if the IM CN subsystem of the P-CSCF is not capable to handle emergency sessions." + * Reference + * "ETSI TS 124 229 [1], Clauses 5.2.10.2 and 5.2.6.3.3" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_A entity not isEmergencyRegisteredTo the IMS_A + * } + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives an INVITE containing + * From indicating value "Anonymous", + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * MessageBody; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an INVITE containing + * From indicating value "Anonymous", + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_P_CSCF_A_VIA, + * Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + * PAssertedIdentity, + * MessageBody containing + * XML containing + * Version indicating value "1", + * Type_child indicating value "emergency", + * Reason_child, + * Action_child;;; + * to the IMS_E_CSCF entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_TP_MW_PCSCF_ECO_INVITE_04( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain), + -, + mw_MBody_MIME_Ims3gpp( + *, + mw_Ims_Eco_3gpp_CW + ))) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_INVITE_ECO_04 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_04 + + /** + * @desc "Verify that the E-CSCF successfully processes a callback INVITE from PSAP towards P-CSCF." + * Reference + * "ETSI TS 124 229 [1], Clauses 5.2.10.2 and 5.2.6.3.3" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isEmergencyRegisteredTo the IMS_A + * } + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives an INVITE containing + * From indicating value "Anonymous", + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + * PAssertedIdentity, + * MessageBody; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends an INVITE containing + * From indicating value "Anonymous", + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_P_CSCF_A_VIA, + * Route indicating value PX_E_CSCF_SERVICE_ROUTE, + * PPreferredIdentity, // one or two instances + * MessageBody; + * to the IMS_E_CSCF entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_05( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_TP_MW_PCSCF_ECO_INVITE_05( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_INVITE_ECO_05 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_05 + /** * @desc Verify that the P-CSCF successfully processes an initial RE-INVITE (Originating Leg). * Initial conditions with { @@ -1849,6 +2255,32 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_100Trying_01 + function f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 100 TRYING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MW_ECSCF_100Trying_01( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_100Trying_Base) }, + { 0, omit }, + "TP_MW_ECSCF_ECO_100Trying_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01 + /** * @desc Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg). * Initial conditions with { @@ -2013,6 +2445,34 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_180RINGING_01 + function f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 180 RINGING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MW_ECSCF_180Ringing_01( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + mw_To_NameAddr_TelUrl( + -, + p_sip.request.msgHeader.toField.addressField.addrSpecUnion.components.tel.subscriber + ))) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + { 0, omit }, + "TP_MW_ECSCF_ECO_180RINGING_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01 + /** * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Terminating Leg).. * Initial conditions with { @@ -2191,6 +2651,32 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_183SESSION_PROGRESS_01 + function f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 183 SESSION_PROGRESS + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MW_ECSCF_183SessionProgress_01( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_183SessionProgress_Base) }, + { 0, omit }, + "TP_MW_ECSCF_ECO_183SESSION_PROGRESS_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01 + /** * @desc Verify that the P-CSCF successfully processes a 183 (Ringing) provisional response on initial INVITE (Terminating Leg).. * Initial conditions with { @@ -2383,6 +2869,40 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_200OK_01 + function f_mtc_check_TP_MW_PCSCF_ECO_200OK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); + + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + ( + mw_To_NameAddr_TelUrl({quotedString:=v_psapInfo.publicId}), + mw_To_AddrUnion_TelUrl(v_psapInfo.publicId), + p_sip.request.msgHeader.toField + ) + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_ECSCF_ECO_200OK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_200OK_01 + /** * @desc Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg). * Initial conditions with { @@ -2549,7 +3069,35 @@ module AtsImsIot_TP_behavior_MW_PS { // Check the ACK p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_PCSCF_ACK_01( + { mw_SipRequest(mw_TP_MW_PCSCF_ACK_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_ACK_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_PCSCF_ACK_01 + + function f_mtc_check_TP_MW_PCSCF_ECO_ACK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_ECSCF_ACK_01( p_sip.request.msgHeader.callId, p_sip.request.msgHeader.cSeq, -, // FIXME To be set @@ -2559,14 +3107,14 @@ module AtsImsIot_TP_behavior_MW_PS { }, { mw_SipRequest(mw_ACK_Request_Base) }, { 0, omit }, - "TP_MW_PCSCF_ACK_01 - Request", + "TP_MW_ECSCF_ECO_ACK_01 - Request", false, p_checkMessage ) ); p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MW_PCSCF_ACK_01 + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_ACK_01 /** * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg). @@ -2753,6 +3301,98 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_BYE_01 + /** + * @desc Verify that the P-CSCF successfully processes a BYE for an emergency call. + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_A entity not isEmergencyRegisteredTo the IMS_A and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a BYE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a BYE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_E_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_ECO_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_ECSCF_BYE_01( + p_sip.request.msgHeader.callId, + -, // New CSeq + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_BYE_Request_Base) }, + { 0, omit }, + "TP_MW_ECSCF_ECO_BYE_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_BYE_01 + + function f_mtc_check_TP_MW_PCSCF_ECO_BYE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_ECSCF_BYE_01( + p_sip.request.msgHeader.callId, + -, // New CSeq + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_BYE_Request_Base) }, + { 0, omit }, + "TP_MW_ECSCF_ECO_BYE_02 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_BYE_02 + /** * @desc Verify that the P-CSCF successfully processes a BYE (Terminating Leg). * Initial conditions with { @@ -3031,6 +3671,60 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_01 + function f_mtc_check_TP_MW_PCSCF_ECO_200OK_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_ECSCF_ECO_200OK_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_200OK_BYE_01 + + function f_mtc_check_TP_MW_PCSCF_ECO_200OK_BYE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_ECSCF_ECO_200OK_BYE_02", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_200OK_BYE_02 + /** * @desc Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg). * Initial conditions with { @@ -3260,6 +3954,67 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_CANCEL_01 + /** + * @desc Verify that the P-CSCF successfully processes a CANCEL during Emergency Call establishment. + * Initial conditions with { + * the UE_A entity isEmergencyAttachedTo the EPC_A and + * the UE_A entity isEmergencyRegisteredTo the IMS_A and + * the UE_A entity hasAchievedInitialEmergencyINVITE and + * the UE_A entity isRequestedToSend a CANCEL + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * from the UE_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_EMC_CANCEL_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_ECSCF_CANCEL_01( + p_sip.request.msgHeader.callId, + -, // New CSeq + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_MW_PCSCF_EMC_CANCEL_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_EMC_CANCEL_01 + /** * @desc Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg). * Initial conditions with { @@ -3445,6 +4200,33 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_01 + function f_mtc_check_TP_MW_PCSCF_ECO_200OK_CANCEL_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_ECO_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_PCSCF_ECO_200OK_CANCEL_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_200OK_CANCEL_01 + /** * @desc Verify that the P-CSCF successfully processes a 200 (OK) CANCEL (Terminating Leg). * Initial conditions with { @@ -3864,7 +4646,37 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_01 - function f_mtc_check_TP_MW_PCSCF_ECO_487INVITE_01( + /** + * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_A entity isRequestedToSend a CANCEL + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_P_CSCF_A entity receives a 487_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE; + * from the IMS_E_CSCF_A entity + * } + * then { + * the IMS_P_CSCF_A entity sends a 487_INVITE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE; + * to the UE_A entity + * } + * } + */ + function f_mtc_check_TP_MW_PCSCF_EMC_487INVITE_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, inout SipMessage p_sip @@ -3897,7 +4709,7 @@ module AtsImsIot_TP_behavior_MW_PS { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_487INVITE_01 + } // End of function f_mtc_check_TP_MW_PCSCF_EMC_487INVITE_01 /** * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Terminating Leg). @@ -4013,12 +4825,12 @@ module AtsImsIot_TP_behavior_MW_PS { f_Iot_Sip_receive( { mw_SipResponse( - mw_487RequestTerminated( // TODO Enforce template - p_sip.request.msgHeader.callId, - -, // New CSeq - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField - ) + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + -, // New CSeq + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + ) ) }, { @@ -4038,4 +4850,35 @@ module AtsImsIot_TP_behavior_MW_PS { } // End of group imsRequestTermination + group imsTemporaryUnavailable { + + function f_mtc_check_TP_MW_PCSCF_ECO_480INVITE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_480TemporaryUnavailable(-, p_sip.request.msgHeader.cSeq)) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_PCSCF_ECO_480INVITE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_480INVITE_01 + + } // End of group imsTemporaryUnavailable + } // End of module AtsImsIot_TP_behavior_MW_PS diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MX.ttcn similarity index 56% rename from ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EC.ttcn rename to ttcn/AtsImsIot/AtsImsIot_TP_behavior_MX.ttcn index 559f61d1708e4c2f2afe57579ae85ab63e3cef07..1e7fbdeb264ca447b25644e95d3d039cfb9ec02f 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MX.ttcn @@ -1,10 +1,10 @@ /** - * @author TTF T010 + * @author STF 574 * @version $Id$ - * @desc This module provides the TP behaviour functions at Mw interface at P-CSCF/E-CSCF + * @desc This module provides the TP behaviour functions at Mw interface at S-CSCF/IBCF */ -module AtsImsIot_TP_behavior_MW_EC { +module AtsImsIot_TP_behavior_MX { // LibIms import from LibIms_Templates all; @@ -25,61 +25,65 @@ module AtsImsIot_TP_behavior_MW_EC { import from LibMsrp_Templates all; // AtsImsIot import from AtsImsIot_TestSystem all; - import from AtsImsIot_Templates_MW all; import from AtsImsIot_Templates all; + import from AtsImsIot_Templates_MX all; import from AtsImsIot_TypesAndValues all; import from AtsImsIot_Functions all; group imsInvite { /** - * @desc "Verify that the P-CSCF successfully processes an initial INVITE from an unregistered UE." + * @desc "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the IBCF for a PSAP in another network." * Reference - * "ETSI TS 124 229 [1], Clauses 5.2.10.2 and 5.2.6.3.3" + * "ETSI TS 124 229 [1], Clauses 5.11.2" * Config Id CF_VxLTE_INT * PICS Selection NONE * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_A entity not isRegisteredTo the IMS_A and - * the UE_A entity not isEmergencyRegisteredTo the IMS_A + * the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A * } * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives an INVITE containing - * From indicating value "Anonymous", + * the IMS_E_CSCF entity receives an INVITE containing + * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE, + * Via indicating value PX_P_CSCF_A_VIA, + * Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + * PAssertedIdentity, * MessageBody; - * from the UE_A entity + * from the IMS_P_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends an INVITE containing - * From indicating value "Anonymous", + * the IMS_E_CSCF entity sends an INVITE containing + * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_P_CSCF_A_VIA, - * Route indicating value PX_E_CSCF_SERVICE_ROUTE, + * Via indicating value PX_E_CSCF_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE_IM_CN, + * RecordRoute PX_E_CSCF_SERVICE_ROUTE, + * PChargingVector containing + * not term_ioi_parameter, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA";, * MessageBody; - * to the IMS_E_CSCF entity + * to the IMS_IBCF_A entity * } * } - */ - function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_01( + */ + function f_mtc_check_TP_MX_ECSCF_ECO_INVITE_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, out SipMessage p_sip ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A); - var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_ECSCF_INVITE_01( + { mw_SipRequest(mw_TP_MX_ECSCF_INVITE_01( -, // FIXME Set expected value mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId @@ -87,7 +91,7 @@ module AtsImsIot_TP_behavior_MW_EC { }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, - "TP_MW_ECSCF_INVITE_01 - Request", + "TP_MX_ECSCF_ECO_INVITE_01 - Request", true, p_checkMessage ) @@ -97,71 +101,64 @@ module AtsImsIot_TP_behavior_MW_EC { f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); log("##### p_sip: ", p_sip); } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_01 + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_INVITE_01 /** - * @desc "Verify that the P-CSCF successfully processes an initial INVITE from an registered UE." + * @desc "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the IBCF for a PSAP in another network and includes the LRF provided URI in the Route header." * Reference - * "ETSI TS 124 229 [1], Clauses 5.2.10.3 and 5.2.6.3.3" + * "ETSI TS 124 229 [1], Clauses 5.11.2" * Config Id CF_VxLTE_INT * PICS Selection NONE * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_A entity isEmergencyRegisteredTo the IMS_A + * the IMS_E_CSCF entity supportsRoutingTo the IMS_LRF and + * the IMS_E_CSCF entity hasSentINVITETo the IMS_LRF and + * the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A * } * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives an INVITE containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, - * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_UE_A_VIA, - * Route indicating value PX_UE_A_SERVICE_ROUTE, - * PPreferredIdentity, // one or two instances - * MessageBody; - * from the UE_A entity + * the IMS_E_CSCF entity receives an r_3xx_Any containing + * Contact indicating value LRF_provided_SIP_URI; + * from the IMS_LRF entity * } * then { - * the IMS_P_CSCF_A entity sends an INVITE containing - * From indicating valuePX_UE_A_SIP_URI, + * the IMS_E_CSCF entity sends an INVITE containing + * From indicating value PX_UE_A_SIP_URI, * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, * CallId indicating value PX_UE_A_CALLID, - * Via indicating value PX_P_CSCF_A_VIA, - * Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed - * PAssertedIdentity, + * Via indicating value PX_E_CSCF_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE_IM_CN, + * RecordRoute PX_E_CSCF_SERVICE_ROUTE, + * PChargingVector containing + * not term_ioi_parameter, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA";, * MessageBody; - * to the IMS_E_CSCF entity + * to the IMS_IBCF_A entity * } * } - */ - function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02( + */ + function f_mtc_check_TP_MX_ECSCF_ECO_INVITE_02( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, out SipMessage p_sip ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); - var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); + var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_ECSCF_INVITE_02( + { mw_SipRequest(mw_TP_MX_ECSCF_INVITE_02( -, // FIXME Set expected value - ( - mw_From_NameAddr_SipUrl({quotedString:=v_psapInfo.publicId}, v_psapInfo.publicId, v_psapInfo.domain), - mw_From_AddrUnion_TelUrl(v_psapInfo.publicId) - ), - ( - mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/), - mw_To_AddrUnion_TelUrl(-)//v_userInfoA.publicId - ) + mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId + mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId )) }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, - "TP_MW_PCSCF_INVITE_02 - Request", + "TP_MX_ECSCF_ECO_INVITE_02 - Request", true, p_checkMessage ) @@ -171,35 +168,68 @@ module AtsImsIot_TP_behavior_MW_EC { f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); log("##### p_sip: ", p_sip); } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02 + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_INVITE_02 - function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_03( + /** + * @desc "Verify that the E-CSCF successfully processes a callback INVITE from the PSAP in another network over the IBCF and routes the request to the P-CSCF." + * Reference + * "ETSI TS 124 229 [1], Clauses 5.11.2" + * Config Id CF_VxLTE_INT + * PICS Selection NONE + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A + * } + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF entity receives an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_P_CSCF_A_VIA, + * Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed + * PAssertedIdentity, + * MessageBody; + * from the IMS_IBCF_A entity + * } + * then { + * the IMS_E_CSCF entity sends an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_E_CSCF_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE_IM_CN, + * RecordRoute PX_E_CSCF_SERVICE_ROUTE, + * PChargingVector containing + * not term_ioi_parameter, + * orig_ioi_parameter + * indicating value "Operator Identifier Of ImsA";, + * MessageBody; + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MX_ECSCF_ECO_INVITE_03( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, out SipMessage p_sip ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); - var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); + var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_ECSCF_INVITE_02( + { mw_SipRequest(mw_TP_MX_ECSCF_INVITE_03( -, // FIXME Set expected value - ( - mw_From_NameAddr_SipUrl({quotedString:=v_psapInfo.publicId}, v_psapInfo.publicId, v_psapInfo.domain), - mw_From_AddrUnion_TelUrl(v_psapInfo.publicId) - ), - ( - mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/), - mw_To_AddrUnion_TelUrl(-)//v_userInfoA.publicId - ) + mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId + mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId )) }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, - "TP_MW_PCSCF_INVITE_02 - Request", + "TP_MX_ECSCF_ECO_INVITE_03 - Request", true, p_checkMessage ) @@ -209,43 +239,22 @@ module AtsImsIot_TP_behavior_MW_EC { f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); log("##### p_sip: ", p_sip); } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_03 + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_INVITE_03 } // End of group imsInvite group ims100Trying { - /** - * @desc Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_P_CSCF_A entity receives a 100_Trying - * from the IMS_E_CSCF_A entity - * } - * then { - * the IMS_P_CSCF_A entity sends a 100_Trying - * to the UE_A entity - * } - * } - */ - function f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MX_ECSCF_ECO_100Trying_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 100 TRYING p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MW_ECSCF_100Trying_01( + { mw_SipResponse(mw_TP_MX_ECSCF_100Trying_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField @@ -253,62 +262,29 @@ module AtsImsIot_TP_behavior_MW_EC { }, { mw_SipResponse(mw_100Trying_Base) }, { 0, omit }, - "TP_MW_ECSCF_100Trying_01", + "TP_MX_ECSCF_100Trying_01", false, p_checkMessage ) ); p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01 + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_100Trying_01 } // End of group ims100Trying - + group ims180Ringing { - /** - * @desc Verify that the P-CSCF successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_P_CSCF_A entity receives a 180_Ringing containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * from the IMS_E_CSCF_A entity - * } - * then { - * the IMS_P_CSCF_A entity sends a 180_Ringing containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * to the UE_A entity - * } - * } - */ - function f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MX_ECSCF_ECO_180RINGING_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 180 RINGING p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MW_ECSCF_180Ringing_01( + { mw_SipResponse(mw_TP_MX_ECSCF_180Ringing_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, mw_To_NameAddr_TelUrl( @@ -318,62 +294,29 @@ module AtsImsIot_TP_behavior_MW_EC { }, { mw_SipResponse(mw_180Ringing_Base) }, { 0, omit }, - "TP_MW_ECSCF_180RINGING_01", + "TP_MX_ECSCF_180RINGING_01", false, p_checkMessage ) ); p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01 + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_180RINGING_01 } // End of group ims180Ringing - + group ims183SessionProgress { - /** - * @desc Verify that the P-CSCF successfully processes a 183 (Ringing) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_P_CSCF_A entity receives a 183_SessionProgress containing - * From indicating value PX_SAP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_SAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * from the IMS_E_CSCF_A entity - * } - * then { - * the IMS_P_CSCF_A entity sends a 183_SessionProgress containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE - * ; - * to the UE_A entity - * } - * } - */ - function f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MX_ECSCF_ECO_183SESSION_PROGRESS_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 183 SESSION_PROGRESS p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MW_ECSCF_183SessionProgress_01( + { mw_SipResponse(mw_TP_MX_ECSCF_183SessionProgress_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField @@ -381,65 +324,26 @@ module AtsImsIot_TP_behavior_MW_EC { }, { mw_SipResponse(mw_183SessionProgress_Base) }, { 0, omit }, - "TP_MW_ECSCF_183SESSION_PROGRESS_01", + "TP_MX_ECSCF_183SESSION_PROGRESS_01", false, p_checkMessage ) ); p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01 + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_183SESSION_PROGRESS_01 } // End of group ims183SessionProgress group ims200Ok { - /** - * @desc Verify that the P-CSCF successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_P_CSCF_A entity receives a 200_Ok containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * ; - * from the IMS_E_CSCF_A entity - * } - * then { - * the IMS_P_CSCF_A entity sends a 200_Ok containing - * From indicating value PX_PSAP_SIP_URI, - * To indicating value PX_UE_A_SIP_URI, - * CallId indicating value PX_PSAP_CALLID, - * Via indicating value PX_PSAP_VIA, - * Route indicating value PX_PSAP_SERVICE_ROUTE, - * PChargingVector, - * PChargingFunctionAddresses, - * PPreferredIdentity - * ; - * to the UE_A entity - * } - * } - */ - function f_mtc_check_TP_MW_PCSCF_ECO_200OK_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MX_ECSCF_ECO_200OK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_psapInfo := f_getSipUserId(PX_EUT_B); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); // Check the 200 OK p_monitorCompRef.start( @@ -457,7 +361,7 @@ module AtsImsIot_TP_behavior_MW_EC { }, { mw_SipResponse(mw_200OK_Base) }, { 0, omit }, - "TP_MW_ECSCF_200OK_01", + "TP_MX_ECSCF_200OK_01", false, p_checkMessage ) @@ -465,55 +369,22 @@ module AtsImsIot_TP_behavior_MW_EC { p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_200OK_01 + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_200OK_01 } // End of group ims200Ok group imsAck { - /** - * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the PSAP entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the PSAP entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_P_CSCF_A entity receives an ACK containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_PSAP_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 UE_A entity - * } - * then { - * the IMS_P_CSCF_A entity sends an ACK containing - * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_PSAP_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_E_CSCF_A entity - * } - * } - */ - function f_mtc_check_TP_MW_PCSCF_ECO_ACK_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MX_ECSCF_ECO_ACK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the ACK p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_ECSCF_ACK_01( + { mw_SipRequest(mw_TP_MX_ECSCF_ACK_01( p_sip.request.msgHeader.callId, p_sip.request.msgHeader.cSeq, -, // FIXME To be set @@ -523,65 +394,61 @@ module AtsImsIot_TP_behavior_MW_EC { }, { mw_SipRequest(mw_ACK_Request_Base) }, { 0, omit }, - "TP_MW_ECSCF_ACK_01 - Request", + "TP_MX_ECSCF_ECO_ACK_01 - Request", false, p_checkMessage ) ); p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_ACK_01 + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_ACK_01 } // End of group imsAck group imsBye { /** - * @desc Verify that the P-CSCF successfully processes a BYE (Originating Leg). + * @desc Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency Call and routes the request to the IBCF for a PSAP in another network * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B and - * the UE_A entity previouslyEstablishedCallWith the UE_B + * the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP via IMS_IBCF_A * } * * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity receives a BYE containing + * the IMS_E_CSCF_A entity receives a BYE containing * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, * CallId indicating value PX_UE_A_CALLID, * Via indicating value PX_UE_A_VIA, * Route indicating value PX_UE_A_SERVICE_ROUTE * ; - * from the UE_A entity + * from the IMS_P_CSCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends a BYE containing + * the IMS_E_CSCF_A entity sends a BYE containing * From indicating value PX_UE_A_SIP_URI, - * To indicating value PX_UE_B_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, * 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_E_CSCF_A entity + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * to the IMS_IBCF_A entity * } * } */ - function f_mtc_check_TP_MW_PCSCF_ECO_BYE_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - inout SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MX_ECSCF_ECO_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the BYE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_ECSCF_BYE_01( + { mw_SipRequest(mw_TP_MX_ECSCF_BYE_01( p_sip.request.msgHeader.callId, - -, // New CSeq + -, // New CSeq, -, // FIXME To be set p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField @@ -589,7 +456,7 @@ module AtsImsIot_TP_behavior_MW_EC { }, { mw_SipRequest(mw_BYE_Request_Base) }, { 0, omit }, - "TP_MW_ECSCF_BYE_01 - Request", + "TP_MX_ECSCF_ECO_BYE_01 - Request", true, p_checkMessage ) @@ -598,83 +465,138 @@ module AtsImsIot_TP_behavior_MW_EC { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_BYE_01 + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_BYE_01 - } // End of group imsBye - - group ims200OkBye { - /** - * @desc Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg). + * @desc Verify that the E-CSCF successfully processes a BYE from the IBCF for a PSAP in another network for an Emergency Call and routes the request to the P-CSCF * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B + * the IMS_E_CSCF entity supportsRoutingTo the IM_CN and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP * } * * Expected behaviour * ensure that { * when { - * the IMS_P_CSCF_A entity sends a 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, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * ; - * to the IMS_E_CSCF_A entity + * the IMS_E_CSCF_A entity receives a BYE containing + * From indicating value PX_PSAP_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_PSAP_SIP_URI, + * Via indicating value PX_PSAP_VIA; + * from the IMS_IBCF_A entity * } * then { - * the IMS_P_CSCF_A entity sends a 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, - * not PChargingVector, - * not PChargingFunctionAddresses, - * not PPreferredIdentity - * ; - * to the UE_A entity + * the IMS_E_CSCF_A entity sends a BYE containing + * From indicating value PX_PSAP_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_PSAP_SIP_URI, + * Via indicating value PX_PSAP_VIA; + * to the IMS_P_CSCF_A entity * } * } */ - function f_mtc_check_TP_MW_PCSCF_ECO_200OK_BYE_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + function f_mtc_check_TP_MX_ECSCF_ECO_BYE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MX_ECSCF_BYE_02( + p_sip.request.msgHeader.callId, + -, // New CSeq, + -, // FIXME To be set + { + fieldName := FROM_E, + addressField := p_sip.request.msgHeader.toField.addressField, + fromParams := * + }, //p_sip.request.msgHeader.fromField, + { + fieldName := TO_E, + addressField := p_sip.request.msgHeader.fromField.addressField, + toParams := * + } //p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_BYE_Request_Base) }, + { 0, omit }, + "TP_MX_ECSCF_ECO_BYE_02 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_BYE_02 + + } // End of group imsBye + + group ims200OkBye { + + function f_mtc_check_TP_MX_ECSCF_ECO_200OK_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 200 OK BYE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipResponse(mw_200OK( - p_sip.request.msgHeader.cSeq, - p_sip.request.msgHeader.callId, - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField - )) + { mw_SipResponse(mw_ECO_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) }, { mw_SipResponse(mw_200OK_Base) }, { 0, omit }, - "TP_MW_ECSCF_200OK_BYE_01", + "TP_MX_ECSCF_200OK_BYE_01", false, p_checkMessage ) ); p_monitorCompRef.done; } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_200OK_BYE_01 + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_200OK_BYE_01 } // End of group ims200OkBye - + group imsCancel { - function f_mtc_check_TP_MW_PCSCF_ECO_CANCEL_01( + /** + * @desc Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency Call under establishment and routes the request to the IBCF for a PSAP in another network + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A and + * the UE_A entity hasAchievedInitialEmergencyINVITE via the IMS_IBCF_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_P_CSCF_A entity + * } + * then { + * the IMS_E_CSCF_A entity sends a CANCEL containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE; + * to the IM_CN entity + * } + * } + */ + function f_mtc_check_TP_MX_ECSCF_EMC_CANCEL_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, inout SipMessage p_sip @@ -683,9 +605,9 @@ module AtsImsIot_TP_behavior_MW_EC { // Check the CANCEL p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MW_ECSCF_CANCEL_01( + { mw_SipRequest(mw_TP_MX_ECSCF_CANCEL_01( p_sip.request.msgHeader.callId, - -, // New CSeq + -, // New CSeq, -, // FIXME To be set p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField @@ -693,7 +615,7 @@ module AtsImsIot_TP_behavior_MW_EC { }, { mw_SipRequest(mw_CANCEL_Request_Base) }, { 0, omit }, - "TP_MW_ECSCF_CANCEL_01 - Request", + "TP_MX_ECSCF_EMC_CANCEL_01 - Request", true, p_checkMessage ) @@ -702,13 +624,110 @@ module AtsImsIot_TP_behavior_MW_EC { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_CANCEL_01 + } // End of function f_mtc_check_TP_MX_ECSCF_EMC_CANCEL_01 } // End of group imsCancel - + + group imsRequestTermination { + + /** + * @desc Verify that the E-CSCF successfully processes a 487 response from the IBCF for a PSAP in another network for an Emergency Call and routes the response to the P-CSCF + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP via IMS_IBCF_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a 487INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_IBCF_A entity + * } + * then { + * the IMS_E_CSCF_A entity sends a 480INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MX_ECSCF_EMC_487INVITE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + -, // New CSeq + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField, + omit + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MX_ECSCF_EMC_487INVITE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MX_ECSCF_EMC_487INVITE_01 + + } // End of group imsRequestTermination + group imsTemporaryUnavailable { - function f_mtc_check_TP_MW_PCSCF_ECO_480TEMPAV_01( + /** + * @desc Verify that the E-CSCF successfully processes a 480 response from the IBCF for a PSAP in another network for an Emergency Call and routes the response to the P-CSCF + * Initial conditions with { + * the IMS_E_CSCF entity supportsRoutingTo the IMS_IBCF_A and + * the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP via IMS_IBCF_A + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a 480INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_IBCF_A entity + * } + * then { + * the IMS_E_CSCF_A entity sends a 480INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + * 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_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MX_ECSCF_ECO_480INVITE_01( in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, inout SipMessage p_sip @@ -724,7 +743,7 @@ module AtsImsIot_TP_behavior_MW_EC { mw_SipResponse(mdw_4XX_Base) }, { 0, omit }, - "TP_MW_PCSCF_ECO_480TEMPAV_01", + "TP_MX_ECSCF_ECO_480INVITE_01", true, p_checkMessage ) @@ -733,8 +752,72 @@ module AtsImsIot_TP_behavior_MW_EC { // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } - } // End of function f_mtc_check_TP_MW_PCSCF_ECO_480TEMPAV_01 + } // End of function f_mtc_check_TP_MX_ECSCF_ECO_480INVITE_01 } // End of group imsTemporaryUnavailable -} // End of module AtsImsIot_TP_behavior_MW_EC \ No newline at end of file + group ims3xxAny { + + /** + * @desc Verify that the LRF successfully processes a 3xx Any response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_LRF_A 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 indicating value V_CONTACT + * ; + * from the IMS_EBCF_A entity + * } + * then { + * the IMS_LRF_A entity sends a 3xx 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, + * Contact indicating value V_CONTACT + * ; + * to the IMS_EBCF_A entity + * } + * } + */ + function f_mtc_check_TP_MX_LRF_3xxAny_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 3xx Any + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_3xxContact( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.accept + )) + }, + { mw_SipResponse(mdw_3XX_Base) }, + { 0, omit }, + "TP_MX_3xxAny_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MX_LRF_3xxAny_01 + + } // End of group ims3xxAny + +} // End of module AtsImsIot_TP_behavior_MX diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_Mx_LRF.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_Mx_LRF.ttcn deleted file mode 100644 index f38a0385917acc0c7c8e0fb0366f7698c730adfd..0000000000000000000000000000000000000000 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_Mx_LRF.ttcn +++ /dev/null @@ -1,98 +0,0 @@ -/** - * @author STF 574 - * @version $Id$ - * @desc This module provides the TP behaviour functions at Mw interface at S-CSCF/IBCF - */ - -module AtsImsIot_TP_behavior_Mx_LRF { - - // LibIms - import from LibIms_Templates all; - import from LibIms_UpperTester all; - // LibIot - import from LibIot_TypesAndValues all; - import from LibIot_Functions all; - import from LibIot_TestInterface all; - import from LibIot_PIXITS all; - // LibSip - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - import from LibSip_Common all; - import from LibSip_SDPTypes all; - // LibMsrp - import from LibMsrp_TypesAndValues all; - import from LibMsrp_Functions all; - import from LibMsrp_Templates all; - // AtsImsIot - import from AtsImsIot_TestSystem all; - import from AtsImsIot_Templates all; - import from AtsImsIot_Templates_MW all; - import from AtsImsIot_Templates_ML all; - import from AtsImsIot_TypesAndValues all; - import from AtsImsIot_Functions all; - - group ims3xxAny { - - /** - * @desc Verify that the LRF successfully processes a 3xx Any response on initial INVITE (Originating Leg). - * Initial conditions with { - * the UE_A entity isAttachedTo the EPC_A and - * the UE_B entity isAttachedTo the EPC_B and - * the UE_A entity isRegisteredTo the IMS_A and - * the UE_B entity isRegisteredTo the IMS_B - * } - * - * Expected behaviour - * ensure that { - * when { - * the IMS_LRF_A 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 indicating value V_CONTACT - * ; - * from the IMS_EBCF_A entity - * } - * then { - * the IMS_LRF_A entity sends a 3xx 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, - * Contact indicating value V_CONTACT - * ; - * to the IMS_EBCF_A entity - * } - * } - */ - function f_mtc_check_TP_MX_LRF_3xxAny_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)) { - // Check the 3xx Any - p_monitorCompRef.start( - f_Iot_Sip_receive( - { mw_SipResponse(mw_3xxContact( - p_sip.request.msgHeader.cSeq, - p_sip.request.msgHeader.accept - )) - }, - { mw_SipResponse(mdw_3XX_Base) }, - { 0, omit }, - "TP_Mx_LRF_3xxAny_01", - false, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_MX_LRF_3xxAny_01 - - } // End of group ims3xxAny - -} // End of module AtsImsIot_TP_behavior_Mx_LRF diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn index 32db8f66978611f9721fb7c4a72c27a07a32bc1a..f7ad97b2bf752af22b1f2b02110df221ef5fd47c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn @@ -11,11 +11,20 @@ module AtsImsIot_Templates { import from LibIot_TypesAndValues all; import from AtsImsIot_TypesAndValues all; import from LibSip_SIPTypesAndValues all; + import from LibSip_MessageBodyTypes all; + import from LibSip_XMLTypes all; import from LibSip_Templates all; import from LibSip_Common all; import from LibMsrp_TypesAndValues all; + import from LibIms_Templates all; import from LibIot_PIXITS all; import from AtsImsIot_PIXITS all; + + import from XSD all; + import from NoTargetNamespace language "XSD" all + with { + extension "File:../xsd/Ims3gpp.xsd"; + } group adapterMsgTemplates { template SetFilterReq m_SetFilterReq(ProtocolFilter p_protocol, InterfaceInfoList p_iterfaces) := { @@ -1920,6 +1929,14 @@ module AtsImsIot_Templates { payload := * } + template Response mw_420BadExtension_Base modifies m_Response_Dummy := + { + statusLine := {c_sipNameVersion, 420, ?}, + msgHeader := ?, + messageBody := *, + payload := * + } + template Response mw_480TemporaryUnavailable_Base modifies m_Response_Dummy := { statusLine := c_statusLine480, @@ -2278,6 +2295,35 @@ module AtsImsIot_Templates { } } // End of template mw_200OK + template (present) Response mw_ECO_200OK( + template (present) CSeq p_cSeq := ?, + template (present) CallId p_callId := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_200OK := { + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + pChargingVector := omit, + pChargingFunctionAddresses := omit, + pPreferredID := omit + } + } // End of template mw_200OK + + template Response mw_380AlternateService( + template (present) CSeq p_cSeq := ?, + template (present) CallId p_callId := ?, + template WwwAuthenticate p_wwwAuthenticate := * + ) modifies mdw_3XX_Base := { + msgHeader := { + cSeq := p_cSeq, + callId := p_callId, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_380AlternateService + template Response mw_401Unauthorized( template (present) CSeq p_cSeq := ?, template (present) WwwAuthenticate p_wwwAuthenticate := ? @@ -2288,6 +2334,16 @@ module AtsImsIot_Templates { } } // End of template mw_401Unauthorized + template Response mw_403Forbidden( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_403Forbidden_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_403Forbidden + template Response mw_404NotFound( template (present) CSeq p_cSeq := ?, template (present) WwwAuthenticate p_wwwAuthenticate := ? @@ -2298,6 +2354,18 @@ module AtsImsIot_Templates { } } // End of template mw_404NotFound + template Response mw_420BadExtension( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ?, + template (present) MessageBody p_messageBody := ? + ) modifies mw_420BadExtension_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + }, + messageBody := p_messageBody + } // End of template mw_420BadExtension + template Response mw_480TemporaryUnavailable( template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, @@ -2495,7 +2563,27 @@ module AtsImsIot_Templates { } } - + template (present) Accept mw_accept( + template (present) AcceptBody_List p_acceptArgs := ? + ) := { + fieldName := ACCEPT_E, + acceptArgs := p_acceptArgs + } + + template (present) RecvInfo mw_recvInfo( + template InfoPackage_List p_infoPackageList := ? + ) := { + fieldName := RECV_INFO_E, + infoPackageList := p_infoPackageList + } + + template(present) PPreferredID mw_PPreferredID( + template(present) PPreferredIDValue_List p_pPreferredIDValue_List := ? + ) := { + fieldName := P_PREFERRED_ID_E, + pPreferredIDValueList := p_pPreferredIDValue_List + } + } // end group HeaderTemplates group AuxiliaryInformationElementTemplates { @@ -2567,8 +2655,39 @@ module AtsImsIot_Templates { } } } + template (present) AcceptBody mw_acceptBody( + template (present) charstring p_mediaRange := ?, + template SemicolonParam_List p_acceptParam := * + ) :={ + mediaRange := p_mediaRange, + acceptParam := p_acceptParam + } + + template (present) InfoPackage_Type mw_infoPackage_Type( + template (present) charstring p_infoPackageName := ?, + template SemicolonParam_List p_infoPackageParams := * + ) := { + infoPackageName := p_infoPackageName, + infoPackageParams := p_infoPackageParams + } + } // End of group AuxiliaryInformationElementTemplates + group messageBody_XML { + + template(present) TIMS3GPP mw_Ims_Eco_3gpp_CW modifies mw_Ims_3gpp_CW := { + choice := { + alternative_service := { + type_ := { + attr := { "emergency" }, + elem_list := ? + } + } + } + } + + } // End of group messageBody_XML + group adapterTemplates { template GeneralConfigurationReq m_generalConfigurationReq_offline := { diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn index 106f46526d8fe5de6365f302d409a7fd887906ab..cb0acdbd8255e0cf4caea052a0e80ea2d9d45349 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn @@ -11,6 +11,7 @@ module AtsImsIot_Templates_GM { // libSip import from LibSip_SIPTypesAndValues all; + import from LibSip_MessageBodyTypes all; import from LibSip_Templates all; import from LibSip_Common all; @@ -212,10 +213,14 @@ module AtsImsIot_Templates_GM { template (present) Authorization p_authorization := ?, template PChargingVector p_pChargingVector := *, template PVisitedNetworkID p_pVisitedNetworkID := *, - template (present) Contact p_contact := ? + template (present) Contact p_contact := ?, + template Path p_path := ?, + template Warning p_warning := ? ) modifies mw_TP_GM_PCSCF_REGISTER_01 := { msgHeader := { - contact := p_contact + contact := p_contact, + path := p_path, + warning := p_warning } } // End of template mw_TP_GM_PCSCF_ECO_REGISTER_01 @@ -228,6 +233,18 @@ module AtsImsIot_Templates_GM { ) modifies mw_TP_GM_PCSCF_REGISTER_01 := { } // End of template mw_TP_GM_PCSCF_REGISTER_02 + template(present) REGISTER_Request mw_TP_GM_PCSCF_ECO_REGISTER_02( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template PChargingVector p_pChargingVector := *, + template PVisitedNetworkID p_pVisitedNetworkID := *, + template (present) Contact p_contact := ?, + template Path p_path := ?, + template Warning p_warning := ? + ) modifies mw_TP_GM_PCSCF_ECO_REGISTER_01 := { + } // End of template mw_TP_GM_PCSCF_REGISTER_02 + template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_03( template (present) From p_from := ?, template (present) To p_to := ?, @@ -243,7 +260,9 @@ module AtsImsIot_Templates_GM { template (present) Authorization p_authorization := ?, template PChargingVector p_pChargingVector := *, template PVisitedNetworkID p_pVisitedNetworkID := *, - template (present) Contact p_contact := ? + template (present) Contact p_contact := ?, + template Path p_path := ?, + template Warning p_warning := ? ) modifies mw_TP_GM_PCSCF_ECO_REGISTER_01 := { } // End of template mw_TP_GM_PCSCF_ECO_REGISTER_03 @@ -256,6 +275,18 @@ module AtsImsIot_Templates_GM { ) modifies mw_TP_GM_PCSCF_REGISTER_01 := { } // End of template mw_TP_GM_PCSCF_REGISTER_04 + template(present) REGISTER_Request mw_TP_GM_PCSCF_ECO_REGISTER_04( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template PChargingVector p_pChargingVector := *, + template PVisitedNetworkID p_pVisitedNetworkID := *, + template (present) Contact p_contact := ?, + template Path p_path := ?, + template Warning p_warning := ? + ) modifies mw_TP_GM_PCSCF_ECO_REGISTER_01 := { + } // End of template mw_TP_GM_PCSCF_ECO_REGISTER_04 + template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_05( template (present) From p_from := ?, template (present) To p_to := ?, @@ -265,6 +296,18 @@ module AtsImsIot_Templates_GM { ) modifies mw_TP_GM_PCSCF_REGISTER_01 := { } // End of template mw_TP_GM_PCSCF_REGISTER_04 + template(present) REGISTER_Request mw_TP_GM_PCSCF_ECO_REGISTER_05( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template PChargingVector p_pChargingVector := *, + template PVisitedNetworkID p_pVisitedNetworkID := *, + template (present) Contact p_contact := ?, + template Path p_path := ?, + template Warning p_warning := ? + ) modifies mw_TP_GM_PCSCF_ECO_REGISTER_01 := { + } // End of template mw_TP_GM_PCSCF_ECO_REGISTER_05 + template(present) REGISTER_Request mw_TP_GM_PCSCF_REGISTER_07( template (present) From p_from := ?, template (present) To p_to := ?, @@ -376,11 +419,13 @@ module AtsImsIot_Templates_GM { template (present) SipUrl p_invite_uri := ?, template (present) From p_from := ?, template (present) To p_to := ?, - template (present) Contact p_contact := ? + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ? ) modifies mw_TP_GM_PCSCF_INVITE_01 := { msgHeader := { contact := p_contact - } + }, + messageBody := p_messageBody } // End of template mw_TP_GM_PCSCF_ECO_INVITE_01 template (present) INVITE_Request mw_TP_GM_PCSCF_INVITE_02( // TODO To be enforced @@ -394,7 +439,8 @@ module AtsImsIot_Templates_GM { template (present) SipUrl p_invite_uri := ?, template (present) From p_from := ?, template (present) To p_to := ?, - template (present) Contact p_contact := ? + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ? ) modifies mw_TP_GM_PCSCF_ECO_INVITE_01 := { } // End of template mw_TP_GM_PCSCF_ECO_INVITE_02 @@ -405,6 +451,15 @@ module AtsImsIot_Templates_GM { ) modifies mw_TP_GM_PCSCF_INVITE_01 := { } // End of template mw_TP_GM_PCSCF_INVITE_03 + template (present) INVITE_Request mw_TP_GM_PCSCF_ECO_INVITE_03( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ? + ) modifies mw_TP_GM_PCSCF_ECO_INVITE_01 := { + } // End of template mw_TP_GM_PCSCF_ECO_INVITE_03 + template (present) INVITE_Request mw_TP_GM_PCSCF_INVITE_04( // TODO To be enforced template (present) SipUrl p_invite_uri := ?, template (present) From p_from := ?, @@ -412,6 +467,23 @@ module AtsImsIot_Templates_GM { ) modifies mw_TP_GM_PCSCF_INVITE_01 := { } // End of template mw_TP_GM_PCSCF_INVITE_04 + template (present) INVITE_Request mw_TP_GM_PCSCF_ECO_INVITE_04( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ?, + template (present) PPreferredID p_pPreferredID := ?, + template (present) Accept p_accept := ?, + template (present) RecvInfo p_recvInfo := ? + ) modifies mw_TP_GM_PCSCF_ECO_INVITE_01 := { + msgHeader := { + accept := p_accept, + recvInfo := p_recvInfo, + pPreferredID := p_pPreferredID + } + } // End of template mw_TP_GM_PCSCF_ECO_INVITE_04 + template (present) INVITE_Request mw_TP_GM_PCSCF_RE_INVITE_01( // TODO To be enforced template (present) SipUrl p_invite_uri := ?, template (present) From p_from := ?, diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MI.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MI.ttcn index 448ec570dffb5aa677f80963468047be759d0794..3a4b5fa36d7fe48b60fc7d92016916e0d9640ba4 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MI.ttcn @@ -29,12 +29,12 @@ module AtsImsIot_Templates_MI { import from AtsImsIot_Templates all; /** - * @desc INVITE Request checking TP_MI_BGCF_INVITE_01 - */ - template(present) INVITE_Request mw_TP_MI_BGCF_INVITE_01 (template (present) SipUrl p_IBCF_SIP_URI := ?, - template (present) From p_from := ?, - template (present) To p_to := ?) - modifies mw_INVITE_Request_Base := { + * @desc INVITE Request checking TP_MI_ECSCF_INVITE_01 + */ + template(present) INVITE_Request mw_TP_MI_ECSCF_INVITE_01 (template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?) + modifies mw_INVITE_Request_Base := { msgHeader := { fromField := p_from, toField := p_to, @@ -42,13 +42,13 @@ module AtsImsIot_Templates_MI { fieldName := ROUTE_E, routeBody := { *, - complement(mw_routeBody(p_IBCF_SIP_URI)), + complement(mw_routeBody(p_invite_uri)), * } }, omit), recordRoute := { fieldName := RECORD_ROUTE_E, - routeBody := {mw_routeBody(p_IBCF_SIP_URI), *} + routeBody := {mw_routeBody(p_invite_uri), *} }, pChargingVector := { fieldName := P_CHARGING_VECTOR_E, @@ -68,7 +68,25 @@ module AtsImsIot_Templates_MI { } } - template (present) Response mw_TP_MI_BGCF_100Trying_01( + template(present) INVITE_Request mw_TP_MI_ECSCF_INVITE_02 (template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?) + modifies mw_TP_MI_ECSCF_INVITE_01 := { + } + + template(present) INVITE_Request mw_TP_MI_ECSCF_INVITE_03 (template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?) + modifies mw_TP_MI_ECSCF_INVITE_01 := { + msgHeader := { + recordRoute := { + fieldName := RECORD_ROUTE_E, + routeBody := {mw_routeBody(p_invite_uri), *} + } + } + } + + template (present) Response mw_TP_MI_ECSCF_100Trying_01( template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, template (present) To p_to := ? @@ -78,9 +96,9 @@ module AtsImsIot_Templates_MI { fromField := p_from, toField := p_to } - } // End of template mw_TP_MI_BGCF_100Trying_01 + } // End of template mw_TP_MI_ECSCF_100Trying_01 - template (present) Response mw_TP_MI_BGCF_180Ringing_01( + template (present) Response mw_TP_MI_ECSCF_180Ringing_01( template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, template (present) To p_to := ? @@ -90,9 +108,9 @@ module AtsImsIot_Templates_MI { fromField := p_from, toField := p_to } - } // End of template mw_TP_MI_BGCF_180Ringing_01 + } // End of template mw_TP_MI_ECSCF_180Ringing_01 - template (present) Response mw_TP_MI_BGCF_183SessionProgress_01( + template (present) Response mw_TP_MI_ECSCF_183SessionProgress_01( template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, template (present) To p_to := ? @@ -102,9 +120,9 @@ module AtsImsIot_Templates_MI { fromField := p_from, toField := p_to } - } // End of template mw_TP_MI_BGCF_183SessionProgress_01 + } // End of template mw_TP_MI_ECSCF_183SessionProgress_01 - template (present) ACK_Request mw_TP_MI_BGCF_ACK_01( // TODO To be enforced + template (present) ACK_Request mw_TP_MI_ECSCF_ACK_01( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, template (present) SipUrl p_ack_uri := ?, @@ -129,9 +147,9 @@ module AtsImsIot_Templates_MI { } } } - } // End of template mw_TP_MI_BGCF_ACK_01 + } // End of template mw_TP_MI_ECSCF_ACK_01 - template (present) BYE_Request mw_TP_MI_BGCF_BYE_01( // TODO To be enforced + template (present) BYE_Request mw_TP_MI_ECSCF_BYE_01( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, template (present) SipUrl p_bye_uri := ?, @@ -158,7 +176,7 @@ module AtsImsIot_Templates_MI { } } // End of template mw_TP_MW_PCSCF_BYE_01 - template (present) CANCEL_Request mw_TP_MI_BGCF_CANCEL_01( // TODO To be enforced + template (present) CANCEL_Request mw_TP_MI_ECSCF_CANCEL_01( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, template (present) SipUrl p_bye_uri := ?, @@ -183,6 +201,6 @@ module AtsImsIot_Templates_MI { } } } - } // End of template mw_TP_MI_BGCF_CANCEL_01 + } // End of template mw_TP_MI_ECSCF_CANCEL_01 } // End of module AtsImsIot_Templates_MI diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_ML.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_ML.ttcn index 47259fc5ac7f96f89f41a4606fc7f058e28d283c..073ab4aaebbc8e28f8614bfd66b0fa4d730b54fe 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_ML.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_ML.ttcn @@ -80,13 +80,4 @@ module AtsImsIot_Templates_ML { } } // End of template mw_TP_ML_ECSCF_3XX_Base_01 - template (present) Response mw_3xxContact( - template (present) CSeq p_cSeq := ?, - Accept p_accept) modifies mdw_3XX_Base := { - msgHeader := { - cSeq := p_cSeq, - accept := p_accept - } - } // End of template mw_3xxContact - } // End of module AtsImsIot_Templates_ML diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MM.ttcn index 0a37e1e153ae5bf7788c4658a215002d280b4bfd..bcfd154257936cd52783222f23f499eb56124a03 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MM.ttcn @@ -11,6 +11,7 @@ module AtsImsIot_Templates_MM { // libSip import from LibSip_SIPTypesAndValues all; + import from LibSip_MessageBodyTypes all; import from LibSip_Templates all; import from LibSip_Common all; @@ -29,11 +30,15 @@ module AtsImsIot_Templates_MM { import from AtsImsIot_Templates all; /** - * @desc INVITE Request checking TP_MM_ECSCF_INVITE_01 - */ - template(present) INVITE_Request mw_TP_MM_ECSCF_INVITE_01 (template (present) SipUrl p_IBCF_SIP_URI := ?, - template (present) From p_from := ?, - template (present) To p_to := ?) + * @desc INVITE Request checking TP_MM_ECSCF_INVITE_01 + */ + template(present) INVITE_Request mw_TP_MM_ECSCF_INVITE_01 (template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ?, + template (present) PAssertedID p_pAssertedID := ? + ) modifies mw_INVITE_Request_Base := { msgHeader := { fromField := p_from, @@ -42,32 +47,43 @@ module AtsImsIot_Templates_MM { fieldName := ROUTE_E, routeBody := { *, - complement(mw_routeBody(p_IBCF_SIP_URI)), + complement(mw_routeBody(p_invite_uri)), * } }, omit), recordRoute := { fieldName := RECORD_ROUTE_E, - routeBody := {mw_routeBody(p_IBCF_SIP_URI), *} - }, - pChargingVector := { - fieldName := P_CHARGING_VECTOR_E, - chargeParams := { - *, -// {id := "icid-value", paramValue := ?}, - *, - {id := "orig-ioi", paramValue := ?}, - *, -// complement({id := "term-ioi", paramValue := ?}), - *, - complement({id := "access-network-charging-info", paramValue := ?}), - * - } + routeBody := {mw_routeBody(p_invite_uri), *} }, - pAccessNetworkInfo := omit + contact := p_contact, + pAssertedID := p_pAssertedID + }, + messageBody := p_messageBody + } + + template(present) INVITE_Request mw_TP_MM_ECSCF_INVITE_02 (template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ?, + template (present) PAssertedID p_pAssertedID := ? + ) + modifies mw_TP_MM_ECSCF_INVITE_01 := { + msgHeader := { + pChargingFunctionAddresses := omit } } + template(present) INVITE_Request mw_TP_MM_ECSCF_INVITE_03 (template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ?, + template (present) PAssertedID p_pAssertedID := ? + ) + modifies mw_TP_MM_ECSCF_INVITE_02 := { + } + template (present) Response mw_TP_MM_ECSCF_100Trying_01( template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, @@ -156,7 +172,19 @@ module AtsImsIot_Templates_MM { } } } - } // End of template mw_TP_MW_PCSCF_BYE_01 + } // End of template mw_TP_MM_ECSCF_BYE_01 + + template (present) BYE_Request mw_TP_MM_ECSCF_BYE_02( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_bye_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MM_ECSCF_BYE_01 := { + msgHeader := { + route := * + } + } // End of template mw_TP_MM_ECSCF_BYE_02 template (present) CANCEL_Request mw_TP_MM_ECSCF_CANCEL_01( // TODO To be enforced template (present) CallId p_callId := ?, diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn index 05dd77426b9a5035382acd407aed18b5a3947615..ad1de230e698d5c810a29cb9c57ee47da8bf7a38 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn @@ -11,6 +11,7 @@ module AtsImsIot_Templates_MW { // libSip import from LibSip_SIPTypesAndValues all; + import from LibSip_MessageBodyTypes all; import from LibSip_Templates all; import from LibSip_Common all; @@ -54,12 +55,18 @@ module AtsImsIot_Templates_MW { template (present) Authorization p_authorization := ?, template PChargingVector p_pChargingVector := *, template PVisitedNetworkID p_pVisitedNetworkID := *, - template (present) Contact p_contact := ? + template (present) Contact p_contact := ?, + template (present) Path p_path := ?, + template (present) Warning p_warning := ?, + template (present) PAccessNetworkInfo p_pAccessNetworkInfo := ? ) modifies mw_REGISTER_authorizedRequest_wo_securityheaders_IMS := { msgHeader := { - contact := p_contact + contact := p_contact, + path := p_path, + warning := p_warning, + pAccessNetworkInfo := p_pAccessNetworkInfo } - } // End of template mw_TP_MW_PCSCF_REGISTER_01 + } // End of template mw_TP_MW_PCSCF_ECO_REGISTER_01 template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_02( template (present) From p_from := ?, @@ -70,6 +77,23 @@ module AtsImsIot_Templates_MW { ) modifies mw_TP_MW_PCSCF_REGISTER_01 := { } // End of template mw_TP_MW_PCSCF_REGISTER_02 + template(present) REGISTER_Request mw_TP_MW_PCSCF_ECO_REGISTER_02( + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Authorization p_authorization := ?, + template PChargingVector p_pChargingVector := *, + template PVisitedNetworkID p_pVisitedNetworkID := *, + template (present) Contact p_contact := ?, + template (present) Path p_path := ?, + template (present) Warning p_warning := ?, + template (present) PAccessNetworkInfo p_pAccessNetworkInfo := ?, + template (present) ServiceRoute p_serviceRoute := ? + ) modifies mw_TP_MW_PCSCF_ECO_REGISTER_01 := { + msgHeader := { + serviceRoute := p_serviceRoute + } + } // End of template mw_TP_MW_PCSCF_ECO_REGISTER_02 + template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_04( template (present) From p_from := ?, template (present) To p_to := ?, @@ -228,12 +252,38 @@ module AtsImsIot_Templates_MW { } } // End of template mw_TP_MW_PCSCF_INVITE_01 + template (present) INVITE_Request mw_TP_MW_PCSCF_ECO_INVITE_01( + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ? + ) modifies mw_TP_MW_PCSCF_INVITE_01 := { + msgHeader := { + contact := p_contact + }, + messageBody := p_messageBody + } + template (present) INVITE_Request mw_TP_MW_PCSCF_INVITE_02( // TODO To be enforced template (present) SipUrl p_invite_uri := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mw_TP_MW_PCSCF_INVITE_01 := { - } // End of template mw_TP_MW_PCSCF_INVITE_03 + } // End of template mw_TP_MW_PCSCF_INVITE_02 + + template (present) INVITE_Request mw_TP_MW_PCSCF_ECO_INVITE_02( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ?, + template (present) PAssertedID p_pAssertedID := ? + ) modifies mw_TP_MW_PCSCF_ECO_INVITE_01 := { + msgHeader := { + pAssertedID := p_pAssertedID + } + } // End of template mw_TP_MW_PCSCF_ECO_INVITE_02 template (present) INVITE_Request mw_TP_MW_PCSCF_INVITE_03( // TODO To be enforced template (present) SipUrl p_invite_uri := ?, @@ -242,6 +292,16 @@ module AtsImsIot_Templates_MW { ) modifies mw_TP_MW_PCSCF_INVITE_01 := { } // End of template mw_TP_MW_PCSCF_INVITE_03 + template (present) INVITE_Request mw_TP_MW_PCSCF_ECO_INVITE_03( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ?, + template (present) PAssertedID p_pAssertedID := ? + ) modifies mw_TP_MW_PCSCF_ECO_INVITE_02 := { + } // End of template mw_TP_MW_PCSCF_ECO_INVITE_03 + template (present) INVITE_Request mw_TP_MW_PCSCF_INVITE_04( // TODO To be enforced template (present) SipUrl p_invite_uri := ?, template (present) From p_from := ?, @@ -249,6 +309,29 @@ module AtsImsIot_Templates_MW { ) modifies mw_TP_MW_PCSCF_INVITE_01 := { } // End of template mw_TP_MW_PCSCF_INVITE_04 + template (present) INVITE_Request mw_TP_MW_PCSCF_ECO_INVITE_04( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ?, + template (present) PAssertedID p_pAssertedID := ? + ) modifies mw_TP_MW_PCSCF_ECO_INVITE_02 := { + } // End of template mw_TP_MW_PCSCF_ECO_INVITE_04 + + template (present) INVITE_Request mw_TP_MW_PCSCF_ECO_INVITE_05( // TODO To be enforced + template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ?, + template (present) PPreferredID p_pPreferredID := ? + ) modifies mw_TP_MW_PCSCF_ECO_INVITE_01 := { + msgHeader := { + pPreferredID := p_pPreferredID + } + } // End of template mw_TP_MW_PCSCF_ECO_INVITE_04 + template (present) INVITE_Request mw_TP_MW_PCSCF_RE_INVITE_01( // TODO To be enforced template (present) SipUrl p_invite_uri := ?, template (present) From p_from := ?, @@ -344,10 +427,10 @@ module AtsImsIot_Templates_MW { } // End of template mw_TP_MW_PCSCF_180Ringing_04 template (present) Response mw_TP_MW_PCSCF_183SessionProgress_01( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_183SessionProgress_Base := { + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_183SessionProgress_Base := { msgHeader := { cSeq := p_cSeq, fromField := p_from, @@ -356,24 +439,24 @@ module AtsImsIot_Templates_MW { } // End of template mw_TP_MW_PCSCF_183SessionProgress_01 template (present) Response mw_TP_MW_PCSCF_183SessionProgress_02( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_MW_PCSCF_183SessionProgress_01 := { + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_183SessionProgress_01 := { } // End of template mw_TP_MW_PCSCF_183SessionProgress_02 template (present) Response mw_TP_MW_PCSCF_183SessionProgress_03( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_MW_PCSCF_183SessionProgress_01 := { + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_183SessionProgress_01 := { } // End of template mw_TP_MW_PCSCF_183SessionProgress_03 template (present) Response mw_TP_MW_PCSCF_183SessionProgress_04( - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_TP_MW_PCSCF_183SessionProgress_01 := { + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MW_PCSCF_183SessionProgress_01 := { } // End of template mw_TP_MW_PCSCF_183SessionProgress_04 template (present) ACK_Request mw_TP_MW_PCSCF_ACK_01( // TODO To be enforced diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MX.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MX.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..f2696c68ca64996cbeafcb1dbbaeac9cc7d2538f --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MX.ttcn @@ -0,0 +1,225 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides TP related templates used at MM interface + */ +module AtsImsIot_Templates_MX { + + // LibCommon + //import from LibCommon_BasicTypesAndValues all; + //import from LibCommon_VerdictControl all; + + // 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_Templates all; + + //import from LibMsrp_TypesAndValues all; + + // LibIot + //import from LibIot_TypesAndValues all; + import from LibIot_PIXITS all; + + // AtsImsIot + //import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_PIXITS all; + import from AtsImsIot_Templates all; + + /** + * @desc INVITE Request checking TP_MX_ECSCF_INVITE_01 + */ + template(present) INVITE_Request mw_TP_MX_ECSCF_INVITE_01 (template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ?, + template (present) PAssertedID p_pAssertedID := ? + ) + modifies mw_INVITE_Request_Base := { + msgHeader := { + fromField := p_from, + toField := p_to, + route := ({ + fieldName := ROUTE_E, + routeBody := { + *, + complement(mw_routeBody(p_invite_uri)), + * + } + }, omit), + recordRoute := { + fieldName := RECORD_ROUTE_E, + routeBody := {mw_routeBody(p_invite_uri), *} + }, + contact := p_contact, + pAssertedID := p_pAssertedID + }, + messageBody := p_messageBody + } + + template(present) INVITE_Request mw_TP_MX_ECSCF_INVITE_02 (template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ?, + template (present) PAssertedID p_pAssertedID := ? + ) + modifies mw_TP_MX_ECSCF_INVITE_01 := { + msgHeader := { + pChargingFunctionAddresses := omit + } + } + + template(present) INVITE_Request mw_TP_MX_ECSCF_INVITE_03 (template (present) SipUrl p_invite_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template (present) Contact p_contact := ?, + template (present) MessageBody p_messageBody := ?, + template (present) PAssertedID p_pAssertedID := ? + ) + modifies mw_TP_MX_ECSCF_INVITE_02 := { + } + + template (present) Response mw_TP_MX_ECSCF_100Trying_01( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_100Trying_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_MX_ECSCF_100Trying_01 + + template (present) Response mw_TP_MX_ECSCF_180Ringing_01( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_180Ringing_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_MX_ECSCF_180Ringing_01 + + template (present) Response mw_TP_MX_ECSCF_183SessionProgress_01( + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_183SessionProgress_Base := { + msgHeader := { + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_TP_MX_ECSCF_183SessionProgress_01 + + template (present) ACK_Request mw_TP_MX_ECSCF_ACK_01( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_ack_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_ACK_Request_Base := { + requestLine := { + method := ACK_E, + requestUri := p_ack_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + callId := p_callId, + fromField := p_from, + toField := p_to, + route := { + fieldName := ROUTE_E, + routeBody := { + *, + ?, + * + } + } + } + } // End of template mw_TP_MX_ECSCF_ACK_01 + + template (present) BYE_Request mw_TP_MX_ECSCF_BYE_01( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_bye_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_BYE_Request_Base := { + requestLine := { + method := BYE_E, + requestUri := p_bye_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + callId := p_callId, + fromField := p_from, + toField := p_to, + route := { + fieldName := ROUTE_E, + routeBody := { + *, + ?, + * + } + } + } + } // End of template mw_TP_MX_ECSCF_BYE_01 + + template (present) BYE_Request mw_TP_MX_ECSCF_BYE_02( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_bye_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_TP_MX_ECSCF_BYE_01 := { + msgHeader := { + route := * + } + } // End of template mw_TP_MX_ECSCF_BYE_02 + + template (present) CANCEL_Request mw_TP_MX_ECSCF_CANCEL_01( // TODO To be enforced + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) SipUrl p_bye_uri := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_CANCEL_Request_Base := { + requestLine := { + method := CANCEL_E, + requestUri := p_bye_uri, // @TODO + sipVersion := c_sipNameVersion + }, + msgHeader := { + callId := p_callId, + fromField := p_from, + toField := p_to, + route := { + fieldName := ROUTE_E, + routeBody := { + *, + ?, + * + } + } + } + } // End of template mw_TP_MX_ECSCF_CANCEL_01 + + template (present) Response mw_3xxContact( + template (present) CSeq p_cSeq := ?, + Accept p_accept) modifies mdw_3XX_Base := { + msgHeader := { + cSeq := p_cSeq, + accept := p_accept + } + } // End of template mw_3xxContact + +} // End of module AtsImsIot_Templates_MX diff --git a/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn b/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn index 961f35c09fca82716f458450b7a47ad3bbb2f009..7c0384e670c578fcaf42692d0ab06024a4ba1097 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn @@ -9,7 +9,7 @@ module AtsImsIot_TypesAndValues { import from LibCommon_BasicTypesAndValues all; import from LibSip_SIPTypesAndValues all; import from LibMsrp_TypesAndValues all; - import from LibDiameter_TypesAndValues {type DIAMETER_MSG} + import from LibDiameter_TypesAndValues all; import from LibCommon_DataStrings all; group SIPmessageTypes {