Loading ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn +58 −8 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ module AtsImsIot_Emergency { import from AtsImsIot_TP_behavior_MW_EC all; import from AtsImsIot_TP_behavior_MW_EB all; import from AtsImsIot_TP_behavior_MM all; import from AtsImsIot_TP_behavior_ML all; import from AtsImsIot_TP_behavior_IC all; import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; Loading Loading @@ -642,9 +643,8 @@ 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_ML_LRF_INTERFACENAME // E-CSCF -> LRF: mlE_LTF PX_SIP_MM_PSAP_INTERFACENAME, // E-CSCF -> PSAP PX_SIP_ML_LRF_INTERFACENAME // E-CSCF -> LRF })) { var SipMessage v_sip; Loading @@ -659,15 +659,65 @@ module AtsImsIot_Emergency { // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); if (PX_PSAP_REGISTERED) { f_mtc_userRegistration(v_psap, v_infoPsap); f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_04(); } else { // TODO Check OPTIONS from PSAP to E-CSCF } f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_01(); // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); // TODO f_mtc_userCheckCallEstablished(v_ueA); // Event 34 f_mtc_userCheckCallEstablished(v_psap); // Event 34 f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 3 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 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_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_01(vc_vxlte_monitor_components.mlE_LTF, -, v_sip); // Event 11 f_mtc_check_TP_ML_ECSCF_ECO_3xx_01(vc_vxlte_monitor_components.mlE_LTF, -, v_sip); // Event 12 f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwB_PSAP, true); // Event 13 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); // 183 In Progress 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 //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 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_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 24 f_mtc_userCheckRinging(v_psap); // Event 21 f_mtc_userCheckPeerIsRinging(v_ueA); // Event 21 f_mtc_userAnswerCall(v_psap); // Event 28 f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 25 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 26 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 27 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // ACK Event 28 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 29 f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwB_PSAP); // ACK – Event 30 f_mtc_userCheckCallEstablished(v_ueA); // Event 31 f_mtc_userCheckCallEstablished(v_psap); // Event 31 // Postamble f_mtc_EndCall(v_ueA); Loading ttcn/AtsImsIot/AtsImsIot_TP_behavior_ML.ttcn 0 → 100644 +142 −0 Original line number Diff line number Diff line /* * @author TTF T010 * @version $Id$ * @desc This module provides the TP behaviour functions at ML interface */ module AtsImsIot_TP_behavior_ML { // 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 from the P-CSCF and routes the request to the LRF." * 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 * } * 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_LRF entity * } * } */ function f_mtc_check_TP_ML_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_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_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_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_01 } // End of group imsInvite group ims3xxx { function f_mtc_check_TP_ML_ECSCF_ECO_3xx_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_ML_ECSCF_3XX_Base_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField )) }, { mw_SipResponse(mdw_3XX_Base) }, { 0, omit }, "TP_ML_ECSCF_ECO_3xxx_01", false, p_checkMessage ) ); p_monitorCompRef.done; } } // End of function f_mtc_check_TP_ML_ECSCF_ECO_3xx_01 } // End of group ims183SessionProgress } // End of module AtsImsIot_TP_behavior_ML No newline at end of file ttcn/AtsImsIot/AtsImsIot_Templates.ttcn +7 −0 Original line number Diff line number Diff line Loading @@ -1920,6 +1920,13 @@ module AtsImsIot_Templates { messageBody := *, payload := * } template Response mdw_3XX_Base modifies m_Response_Dummy := { statusLine := {c_sipNameVersion, (300..399), ?}, msgHeader := ?, messageBody := *, payload := * } template Response mw_401Unauthorized_Base modifies m_Response_Dummy := { statusLine := {c_sipNameVersion, 401, ?}, Loading ttcn/AtsImsIot/AtsImsIot_Templates_ML.ttcn 0 → 100644 +83 −0 Original line number Diff line number Diff line /* * @author STF 574 * @version $Id$ * @desc This module provides TP related templates used at ML interface */ module AtsImsIot_Templates_ML { // LibCommon //import from LibCommon_BasicTypesAndValues all; //import from LibCommon_VerdictControl all; // libSip import from LibSip_SIPTypesAndValues 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_ML_PSAP_INVITE_01 */ template(present) INVITE_Request mw_TP_ML_ECSCF_INVITE_01 (template (present) SipUrl p_IBCF_SIP_URI := ?, template (present) From p_from := ?, template (present) To p_to := ?) modifies mw_INVITE_Request_Base := { msgHeader := { fromField := p_from, toField := p_to, route := ({ fieldName := ROUTE_E, routeBody := { *, complement(mw_routeBody(p_IBCF_SIP_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 := ?}), * } }, pAccessNetworkInfo := omit } } template (present) Response mw_TP_ML_ECSCF_3XX_Base_01( template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mdw_3XX_Base := { msgHeader := { cSeq := p_cSeq, fromField := p_from, toField := p_to } } // End of template mw_TP_ML_ECSCF_3XX_Base_01 } // End of module AtsImsIot_Templates_ML Loading
ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn +58 −8 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ module AtsImsIot_Emergency { import from AtsImsIot_TP_behavior_MW_EC all; import from AtsImsIot_TP_behavior_MW_EB all; import from AtsImsIot_TP_behavior_MM all; import from AtsImsIot_TP_behavior_ML all; import from AtsImsIot_TP_behavior_IC all; import from AtsImsIot_TP_behavior_CX all; import from AtsImsIot_TP_behavior_GX all; Loading Loading @@ -642,9 +643,8 @@ 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_ML_LRF_INTERFACENAME // E-CSCF -> LRF: mlE_LTF PX_SIP_MM_PSAP_INTERFACENAME, // E-CSCF -> PSAP PX_SIP_ML_LRF_INTERFACENAME // E-CSCF -> LRF })) { var SipMessage v_sip; Loading @@ -659,15 +659,65 @@ module AtsImsIot_Emergency { // Preamble f_mtc_userRegistration(v_ueA, v_userInfoA); if (PX_PSAP_REGISTERED) { f_mtc_userRegistration(v_psap, v_infoPsap); f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_04(); } else { // TODO Check OPTIONS from PSAP to E-CSCF } f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_01(); // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); // TODO f_mtc_userCheckCallEstablished(v_ueA); // Event 34 f_mtc_userCheckCallEstablished(v_psap); // Event 34 f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 3 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 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_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_01(vc_vxlte_monitor_components.mlE_LTF, -, v_sip); // Event 11 f_mtc_check_TP_ML_ECSCF_ECO_3xx_01(vc_vxlte_monitor_components.mlE_LTF, -, v_sip); // Event 12 f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwB_PSAP, true); // Event 13 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); // 183 In Progress 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 //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 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_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 24 f_mtc_userCheckRinging(v_psap); // Event 21 f_mtc_userCheckPeerIsRinging(v_ueA); // Event 21 f_mtc_userAnswerCall(v_psap); // Event 28 f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 25 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 26 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 27 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // ACK Event 28 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 29 f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwB_PSAP); // ACK – Event 30 f_mtc_userCheckCallEstablished(v_ueA); // Event 31 f_mtc_userCheckCallEstablished(v_psap); // Event 31 // Postamble f_mtc_EndCall(v_ueA); Loading
ttcn/AtsImsIot/AtsImsIot_TP_behavior_ML.ttcn 0 → 100644 +142 −0 Original line number Diff line number Diff line /* * @author TTF T010 * @version $Id$ * @desc This module provides the TP behaviour functions at ML interface */ module AtsImsIot_TP_behavior_ML { // 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 from the P-CSCF and routes the request to the LRF." * 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 * } * 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_LRF entity * } * } */ function f_mtc_check_TP_ML_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_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_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_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_01 } // End of group imsInvite group ims3xxx { function f_mtc_check_TP_ML_ECSCF_ECO_3xx_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_ML_ECSCF_3XX_Base_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField )) }, { mw_SipResponse(mdw_3XX_Base) }, { 0, omit }, "TP_ML_ECSCF_ECO_3xxx_01", false, p_checkMessage ) ); p_monitorCompRef.done; } } // End of function f_mtc_check_TP_ML_ECSCF_ECO_3xx_01 } // End of group ims183SessionProgress } // End of module AtsImsIot_TP_behavior_ML No newline at end of file
ttcn/AtsImsIot/AtsImsIot_Templates.ttcn +7 −0 Original line number Diff line number Diff line Loading @@ -1920,6 +1920,13 @@ module AtsImsIot_Templates { messageBody := *, payload := * } template Response mdw_3XX_Base modifies m_Response_Dummy := { statusLine := {c_sipNameVersion, (300..399), ?}, msgHeader := ?, messageBody := *, payload := * } template Response mw_401Unauthorized_Base modifies m_Response_Dummy := { statusLine := {c_sipNameVersion, 401, ?}, Loading
ttcn/AtsImsIot/AtsImsIot_Templates_ML.ttcn 0 → 100644 +83 −0 Original line number Diff line number Diff line /* * @author STF 574 * @version $Id$ * @desc This module provides TP related templates used at ML interface */ module AtsImsIot_Templates_ML { // LibCommon //import from LibCommon_BasicTypesAndValues all; //import from LibCommon_VerdictControl all; // libSip import from LibSip_SIPTypesAndValues 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_ML_PSAP_INVITE_01 */ template(present) INVITE_Request mw_TP_ML_ECSCF_INVITE_01 (template (present) SipUrl p_IBCF_SIP_URI := ?, template (present) From p_from := ?, template (present) To p_to := ?) modifies mw_INVITE_Request_Base := { msgHeader := { fromField := p_from, toField := p_to, route := ({ fieldName := ROUTE_E, routeBody := { *, complement(mw_routeBody(p_IBCF_SIP_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 := ?}), * } }, pAccessNetworkInfo := omit } } template (present) Response mw_TP_ML_ECSCF_3XX_Base_01( template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, template (present) To p_to := ? ) modifies mdw_3XX_Base := { msgHeader := { cSeq := p_cSeq, fromField := p_from, toField := p_to } } // End of template mw_TP_ML_ECSCF_3XX_Base_01 } // End of module AtsImsIot_Templates_ML