/* * @author STF 574, TTF006 * @version $Id$ * @desc This module provides the TP behaviour functions at IC interface */ module AtsImsIot_TP_behavior_ISC { import from AtsImsIot_TestSystem all; import from LibIot_PIXITS all; import from AtsImsIot_Templates all; import from AtsImsIot_TypesAndValues all; import from LibIot_TestInterface all; import from LibIms_UpperTester all; import from LibIot_TypesAndValues all; import from LibIot_Functions all; import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; import from LibSip_Common all; import from AtsImsIot_Functions all; import from AtsImsIot_Templates_ISC all; import from LibIot_PIXITS all; // LibSip import from LibSip_SDPTypes all; // LibMsrp // import from LibMsrp_TypesAndValues { type MsrpURI }; // import from LibMsrp_Functions { function f_str2msrpUri }; // import from LibMsrp_Templates { // template // m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, // m_msrpReport_Dummy, mw_msrpREPORT_success, // m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, // mw_toPath, mw_fromPath, mw_msrpResponse_toPath_fromPath_with_transferReports, // m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, // mw_contentType // }; import from AtsImsIot_Templates_IC all; group g_ISC { group imsRegistration { /** * @desc Starts monitor component behavior for TP_ISC_SCSCF_REGISTER_01 * @param p_monitorCompRef Reference to monitor component * @remark source function f_mtc_check_TP_IC_IBCF_REGISTER_02 */ function f_mtc_check_TP_ISC_SCSCF_REGISTER_01( SipInterfaceMonitor p_monitorCompRef, boolean p_checkMessage := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); p_monitorCompRef.start( f_Iot_Sip_receive( {mw_SipRequest(mdw_TP_ISC_SCSCF_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_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_ISC_SCSCF_REGISTER_01 - REGISTER", false, p_checkMessage ) ); p_monitorCompRef.done; var charstring v_EUT_A_Addr := f_GetEUTPcscfIpAddress_1(); var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1()); p_monitorCompRef.start( f_Iot_Sip_receive( {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))}, //TODO To/From //{mw_SipResponse(mdw_TP_IC_IBCF_REGISTER200OK_02(v_EUT_A_Addr, v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, "TP_ISC_SCSCF_REGISTER_01 - 200 OK", false, p_checkMessage ) ); p_monitorCompRef.done; } }//end f_mtc_check_TP_ISC_SCSCF_REGISTER_01 }// end imsRegistration group imsInvite { /** * @desc Verify that the S-CSCF successfully receives an initial emergency INVITE from a registered but not emergency registered UE. * Reference * "ETSI TS 124 229 [1], Clauses 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 UE_A entity isRequestedToEstablishEmergencyCall * } * then { * the IMS_S_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_ISC_SCSCF_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_getSipUserId(PX_EUT_A); var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP); // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( { mw_SipRequest(mw_TP_ISC_SCSCF_ECO_INVITE_01( -, // 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_ECO_INVITE_01 - Request", //TODO true, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve messge f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); } } // End of function f_mtc_check_TP_ISC_SCSCF_INVITE_01 } group ims183SessionProgress { function f_mtc_check_TP_ISC_SCSCF_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_ISC_SCSCF_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_ISC_SCSCF_ECO_183SESSION_PROGRESS_01", false, p_checkMessage ) ); p_monitorCompRef.done; } } // End of function f_mtc_check_TP_ISC_SCSCF_ECO_183SESSION_PROGRESS_01 } // End of group ims183SessionProgress group ims180Ringing { function f_mtc_check_TP_ISC_SCSCF_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_ISC_SCSCF_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_ISC_SCSCF_180RINGING_01", false, p_checkMessage ) ); p_monitorCompRef.done; } } // End of function f_mtc_check_TP_ISC_SCSCF_ECO_180RINGING_01 } // End of group ims180Ringing group ims200Ok { function f_mtc_check_TP_ISC_SCSCF_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); // 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_ISC_SCSCF_ECO_200OK_01", false, p_checkMessage ) ); p_monitorCompRef.done; } } // End of function f_mtc_check_TP_ISC_SCSCF_ECO_200OK_01 } // End of group ims200Ok group imsAck { function f_mtc_check_TP_ISC_SCSCF_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_ISC_SCSCF_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_ISC_SCSCF_ECO_ACK_01 - Request", false, p_checkMessage ) ); p_monitorCompRef.done; } } // End of function f_mtc_check_TP_ISC_SCSCF_ECO_ACK_01 } // End of group imsAck } // end of g_ISC } // end module AtsImsIot_TP_behavior_IC