Loading ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn +29 −48 Original line number Diff line number Diff line Loading @@ -294,7 +294,7 @@ module AtsImsIot_Emergency { PX_DIAMETER_GX_INTERFACENAME, PX_DIAMETER_RX_INTERFACENAME, PX_SIP_MW_PE_INTERFACENAME, PX_SIP_MM_PSAP_INTERFACENAME // IBCF -> PSAP PX_SIP_MM_PSAP_INTERFACENAME // E-CSCCF -> PSAP })) { var SipMessage v_sip; Loading Loading @@ -338,15 +338,15 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 Session Progress f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // Event 12 f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 In Progress Event 12 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 //Rx/Gx exchange after 183(SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 16 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 17 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 18 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19 f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17 f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwB_PSAP); // 180 Ringing – Event 20 f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 21 Loading @@ -354,7 +354,7 @@ module AtsImsIot_Emergency { f_mtc_userCheckRinging(v_psap); // Event 19 f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 f_mtc_userAnswerCall(v_psap); // Event 20 f_mtc_userAnswerCall(v_psap); // Event 26 f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 23 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 Loading Loading @@ -412,8 +412,7 @@ module AtsImsIot_Emergency { PX_DIAMETER_GX_INTERFACENAME, PX_DIAMETER_RX_INTERFACENAME, PX_SIP_MW_PE_INTERFACENAME, PX_SIP_EB_INTERFACENAME, // E-CSCF -> IBCF PX_SIP_MM_PSAP_INTERFACENAME // IBCF -> PSAP PX_SIP_MM_PSAP_INTERFACENAME // E-CSCCF -> PSAP })) { var SipMessage v_sip; Loading Loading @@ -449,59 +448,41 @@ module AtsImsIot_Emergency { f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8 f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9 f_mtc_check_TP_MW_PCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 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.mwBE, -, v_sip); // Event 11 f_mtc_check_TP_MW_IBCF_100Trying_01(vc_vxlte_monitor_components.mwBE, -, v_sip); f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwB_PSAP, true); // Event 12 f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwB_PSAP, true); // Event 11 f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 Session Progress f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // Event 13 f_mtc_check_TP_MW_IBCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwBE, -, 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 // PRACK after 183 Session Progress: require field is present // FIXME Add check of requires SIP message header to check PRACK //f_mtc_check_TP_MW_PCSCF_ECO_PRACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 15 //f_mtc_check_TP_GM_PCSCF_PRACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20 f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 In Progress Event 12 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 //Rx/Gx exchange after 183(SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 16 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 17 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 18 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19 f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17 f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwB_PSAP); // 180 Ringing – Event 22 f_mtc_check_TP_MW_IBCF_180RINGING_01(vc_vxlte_monitor_components.mwBE, -, 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 // PRACK after 180 Session Progress: require field is present // FIXME Add check of requires SIP message header to check PRACK // f_mtc_check_TP_MW_PCSCF_ECO_PRACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 15 // f_mtc_check_TP_GM_PCSCF_PRACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20 f_mtc_userCheckRinging(v_psap); f_mtc_userCheckPeerIsRinging(v_ueA); f_mtc_userAnswerCall(v_psap); f_mtc_userCheckRinging(v_psap); // Event 19 f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 f_mtc_userAnswerCall(v_psap); // Event 26 f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 26 f_mtc_check_TP_MW_IBCF_200OK(vc_vxlte_monitor_components.mwBE, -, 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_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 23 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 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.mwBE, -, v_sip); // Event 32 f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwB_PSAP); // ACK – Event 33 f_mtc_check_TP_GM_PCSCF_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_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwB_PSAP); // ACK – Event 28 f_mtc_userCheckCallEstablished(v_ueA); // Event 34 f_mtc_userCheckCallEstablished(v_psap); // Event 34 f_mtc_userCheckCallEstablished(v_ueA); // Event 29 f_mtc_userCheckCallEstablished(v_psap); // Event 29 // Postamble f_mtc_EndCall(v_ueA); Loading ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +126 −0 Original line number Diff line number Diff line Loading @@ -1261,6 +1261,66 @@ 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." * Reference * "ETSI TS 124 229 [1], Clauses 5.1.6.8.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 * } * Expected behaviour * ensure that { * when { * the UE_A entity isRequestedToEstablishEmergencyCall * } * then { * 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, // see 5.1.6.8.2 7) * Route indicating value PX_UE_A_SERVICE_ROUTE, * MessageBody; * from the UE_A entity * } * } */ function f_mtc_check_TP_GM_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_userInfoB := 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_INVITE_Request_Base) }, {0, omit}, "TP_GM_PCSCF_INVITE_01 - Request", true, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); log("##### GM p_sip: ", p_sip); } } // End of function f_mtc_check_TP_GM_PCSCF_ECO_INVITE_01 /** * @desc Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg). * Initial conditions with { Loading Loading @@ -1329,6 +1389,72 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_02 /** * @desc "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" * 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 * // TODO Geolocation header maybe added later, check! * MessageBody; * from the UE_A entity * } * } */ function f_mtc_check_TP_GM_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_userInfoB := f_getSipUserId(PX_PSAP); // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( { 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_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_GM_PCSCF_INVITE_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_INVITE_02 function f_mtc_check_TP_GM_PCSCF_INVITE_03( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, Loading ttcn/AtsImsIot/AtsImsIot_TP_behavior_MM.ttcn +5 −5 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ module AtsImsIot_TP_behavior_MM { out SipMessage p_sip ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A); var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); // Check the INVITE Loading Loading
ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn +29 −48 Original line number Diff line number Diff line Loading @@ -294,7 +294,7 @@ module AtsImsIot_Emergency { PX_DIAMETER_GX_INTERFACENAME, PX_DIAMETER_RX_INTERFACENAME, PX_SIP_MW_PE_INTERFACENAME, PX_SIP_MM_PSAP_INTERFACENAME // IBCF -> PSAP PX_SIP_MM_PSAP_INTERFACENAME // E-CSCCF -> PSAP })) { var SipMessage v_sip; Loading Loading @@ -338,15 +338,15 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 Session Progress f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // Event 12 f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 In Progress Event 12 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 //Rx/Gx exchange after 183(SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 16 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 17 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 18 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19 f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17 f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwB_PSAP); // 180 Ringing – Event 20 f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 21 Loading @@ -354,7 +354,7 @@ module AtsImsIot_Emergency { f_mtc_userCheckRinging(v_psap); // Event 19 f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 f_mtc_userAnswerCall(v_psap); // Event 20 f_mtc_userAnswerCall(v_psap); // Event 26 f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 23 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 Loading Loading @@ -412,8 +412,7 @@ module AtsImsIot_Emergency { PX_DIAMETER_GX_INTERFACENAME, PX_DIAMETER_RX_INTERFACENAME, PX_SIP_MW_PE_INTERFACENAME, PX_SIP_EB_INTERFACENAME, // E-CSCF -> IBCF PX_SIP_MM_PSAP_INTERFACENAME // IBCF -> PSAP PX_SIP_MM_PSAP_INTERFACENAME // E-CSCCF -> PSAP })) { var SipMessage v_sip; Loading Loading @@ -449,59 +448,41 @@ module AtsImsIot_Emergency { f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8 f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9 f_mtc_check_TP_MW_PCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 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.mwBE, -, v_sip); // Event 11 f_mtc_check_TP_MW_IBCF_100Trying_01(vc_vxlte_monitor_components.mwBE, -, v_sip); f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwB_PSAP, true); // Event 12 f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwB_PSAP, true); // Event 11 f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 Session Progress f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // Event 13 f_mtc_check_TP_MW_IBCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwBE, -, 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 // PRACK after 183 Session Progress: require field is present // FIXME Add check of requires SIP message header to check PRACK //f_mtc_check_TP_MW_PCSCF_ECO_PRACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 15 //f_mtc_check_TP_GM_PCSCF_PRACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20 f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 In Progress Event 12 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 //Rx/Gx exchange after 183(SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 16 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 17 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 18 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19 f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17 f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwB_PSAP); // 180 Ringing – Event 22 f_mtc_check_TP_MW_IBCF_180RINGING_01(vc_vxlte_monitor_components.mwBE, -, 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 // PRACK after 180 Session Progress: require field is present // FIXME Add check of requires SIP message header to check PRACK // f_mtc_check_TP_MW_PCSCF_ECO_PRACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 15 // f_mtc_check_TP_GM_PCSCF_PRACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20 f_mtc_userCheckRinging(v_psap); f_mtc_userCheckPeerIsRinging(v_ueA); f_mtc_userAnswerCall(v_psap); f_mtc_userCheckRinging(v_psap); // Event 19 f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 f_mtc_userAnswerCall(v_psap); // Event 26 f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 26 f_mtc_check_TP_MW_IBCF_200OK(vc_vxlte_monitor_components.mwBE, -, 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_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 23 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 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.mwBE, -, v_sip); // Event 32 f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwB_PSAP); // ACK – Event 33 f_mtc_check_TP_GM_PCSCF_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_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwB_PSAP); // ACK – Event 28 f_mtc_userCheckCallEstablished(v_ueA); // Event 34 f_mtc_userCheckCallEstablished(v_psap); // Event 34 f_mtc_userCheckCallEstablished(v_ueA); // Event 29 f_mtc_userCheckCallEstablished(v_psap); // Event 29 // Postamble f_mtc_EndCall(v_ueA); Loading
ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +126 −0 Original line number Diff line number Diff line Loading @@ -1261,6 +1261,66 @@ 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." * Reference * "ETSI TS 124 229 [1], Clauses 5.1.6.8.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 * } * Expected behaviour * ensure that { * when { * the UE_A entity isRequestedToEstablishEmergencyCall * } * then { * 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, // see 5.1.6.8.2 7) * Route indicating value PX_UE_A_SERVICE_ROUTE, * MessageBody; * from the UE_A entity * } * } */ function f_mtc_check_TP_GM_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_userInfoB := 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_INVITE_Request_Base) }, {0, omit}, "TP_GM_PCSCF_INVITE_01 - Request", true, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); log("##### GM p_sip: ", p_sip); } } // End of function f_mtc_check_TP_GM_PCSCF_ECO_INVITE_01 /** * @desc Verify that the P-CSCF successfully processes an initial INVITE (Terminating Leg). * Initial conditions with { Loading Loading @@ -1329,6 +1389,72 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_02 /** * @desc "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" * 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 * // TODO Geolocation header maybe added later, check! * MessageBody; * from the UE_A entity * } * } */ function f_mtc_check_TP_GM_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_userInfoB := f_getSipUserId(PX_PSAP); // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( { 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_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_GM_PCSCF_INVITE_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_INVITE_02 function f_mtc_check_TP_GM_PCSCF_INVITE_03( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, Loading
ttcn/AtsImsIot/AtsImsIot_TP_behavior_MM.ttcn +5 −5 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ module AtsImsIot_TP_behavior_MM { out SipMessage p_sip ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A); var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); // Check the INVITE Loading