Loading AtsImsIot/AtsImsIot_Behavior.ttcn +152 −27 Original line number Diff line number Diff line Loading @@ -29,14 +29,31 @@ module AtsImsIot_Behavior { import from LibSip_Templates all; import from LibMsrp_Templates { template mw_msrpSEND_any, mw_msrpResponse_success }; import from AtsImsIot_Functions all; import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} // LibSip import from LibSip_SDPTypes { type SDP_media_desc_list }; // 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, mw_msrpResponse_success, mw_toPath, mw_fromPath }; group checks { group checksTC_IMS_MESS_0001{ Loading Loading @@ -4898,48 +4915,156 @@ group checksTC_IMS_SHARE_0009 { group msrpChecks { function f_mtc_check_TP_IMS_9000_invite_req( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator return SipMessage { var SipMessage v_sip := { request := valueof(m_INVITE_Dummy) }; p_monitorCompRef.start( f_imsIot_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, { }, {0, omit}, "f_mtc_check_TP_IMS_9000_invite_req", false, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve INVITE request message f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); log("### f_mtc_check_TP_IMS_9000_invite_req: v_invite=", v_sip.request.messageBody.sdpMessageBody.media_list); return v_sip; } // End of function f_mtc_check_TP_IMS_9000_invite_req function f_mtc_check_TP_IMS_9000_invite_resp( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage, template StatusLine p_statusLine ) runs on ImsTestCoordinator return SipMessage { var SipMessage v_sip := { request := valueof(m_INVITE_Dummy) }; p_monitorCompRef.start( f_imsIot_receive( { mw_SipResponse(mw_Response_Base(p_statusLine, ?, ?)) }, { }, {0, omit}, "f_mtc_check_TP_IMS_9000_invite_resp", true, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve INVITE response message f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); log("### f_mtc_check_TP_IMS_9000_invite_resp: v_invite=", v_sip.response.messageBody.sdpMessageBody.media_list); return v_sip; } // End of function f_mtc_check_TP_IMS_9000_invite_resp /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component * @param p_checkMessage TODO * <pre> * ensure that { * when { * UE_A sends SEND_MSRP to UE_B * } * then { * UE_B receives the SEND_MSRP containing * FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE * ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response * Content-Type_header indicating text/plain * } * } * </pre> */ function f_mtc_check_TP_MSRP_9000_01( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator return Request { var SipMessage v_sip := { request := valueof(m_INVITE_Dummy) }; var Request v_registerStep; boolean p_checkMessage, in SipMessage p_inviteReq ) runs on ImsTestCoordinator return SipMessage { var SipMessage v_sip := { msrpRequest := valueof(m_msrpSend_Dummy) }; var template MsrpURI v_fromPath; var SDP_media_desc_list v_medias; if (not(ispresent(p_inviteReq.request.messageBody))) { setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_01: 'messageBody' field not present ***"); } else if (not(ischosen(p_inviteReq.request.messageBody.sdpMessageBody))) { setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_01: 'sdpMessageBody' field not selected ***"); } else if (not(ispresent(p_inviteReq.request.messageBody.sdpMessageBody.media_list))) { setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_01: 'media_list' field not present ***"); } else { v_medias := p_inviteReq.request.messageBody.sdpMessageBody.media_list; if (lengthof(v_medias) == 0) { setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_01: 'media_list' is empty ***"); } else { // Extrat fromPath and toPath if (not(f_str2msrpUri(v_medias[0].attributes[0].msrp.attr_value, v_fromPath))) { // FIXME To be refined setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_01: 'media_list' is empty ***"); } else { p_monitorCompRef.start( f_imsIot_receive( { // Pass criteria mw_MsrpRequest(mw_msrpSEND_any) mw_MsrpRequest( mw_msrpSEND_toPath_FromPath( mw_toPath(?), mw_fromPath(v_fromPath) ) ) }, { }, // Fail criteria {0, omit}, "TP_MSRP_9000_01", false, true, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve INVITE message // Retrieve MSRP SEND message f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); v_registerStep := v_sip.request; log("### f_mtc_check_TP_MSRP_9000_01: v_registerStep=", v_sip.request.messageBody.sdpMessageBody.media_list[0].attributes[0].msrp); log("### f_mtc_check_TP_MSRP_9000_01: v_sip=", v_sip.msrpRequest); return v_sip; } } } return v_registerStep return null; } // End of function f_mtc_check_TP_MSRP_9000_01 /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component * @param p_checkMessage TODO * <pre> * ensure that { * when { * UE_B receives SEND_MSRP from UE_A * } * then { * UE_B sends the 200_response_MSRP containing * FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE * ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response * } * } * </pre> */ function f_mtc_check_TP_MSRP_9000_02( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage boolean p_checkMessage, in SipMessage p_inviteResp, in SipMessage p_msrpSend ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( Loading Loading
AtsImsIot/AtsImsIot_Behavior.ttcn +152 −27 Original line number Diff line number Diff line Loading @@ -29,14 +29,31 @@ module AtsImsIot_Behavior { import from LibSip_Templates all; import from LibMsrp_Templates { template mw_msrpSEND_any, mw_msrpResponse_success }; import from AtsImsIot_Functions all; import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} // LibSip import from LibSip_SDPTypes { type SDP_media_desc_list }; // 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, mw_msrpResponse_success, mw_toPath, mw_fromPath }; group checks { group checksTC_IMS_MESS_0001{ Loading Loading @@ -4898,48 +4915,156 @@ group checksTC_IMS_SHARE_0009 { group msrpChecks { function f_mtc_check_TP_IMS_9000_invite_req( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator return SipMessage { var SipMessage v_sip := { request := valueof(m_INVITE_Dummy) }; p_monitorCompRef.start( f_imsIot_receive( { mw_SipRequest(mw_INVITE_Request_Base) }, { }, {0, omit}, "f_mtc_check_TP_IMS_9000_invite_req", false, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve INVITE request message f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); log("### f_mtc_check_TP_IMS_9000_invite_req: v_invite=", v_sip.request.messageBody.sdpMessageBody.media_list); return v_sip; } // End of function f_mtc_check_TP_IMS_9000_invite_req function f_mtc_check_TP_IMS_9000_invite_resp( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage, template StatusLine p_statusLine ) runs on ImsTestCoordinator return SipMessage { var SipMessage v_sip := { request := valueof(m_INVITE_Dummy) }; p_monitorCompRef.start( f_imsIot_receive( { mw_SipResponse(mw_Response_Base(p_statusLine, ?, ?)) }, { }, {0, omit}, "f_mtc_check_TP_IMS_9000_invite_resp", true, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve INVITE response message f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); log("### f_mtc_check_TP_IMS_9000_invite_resp: v_invite=", v_sip.response.messageBody.sdpMessageBody.media_list); return v_sip; } // End of function f_mtc_check_TP_IMS_9000_invite_resp /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component * @param p_checkMessage TODO * <pre> * ensure that { * when { * UE_A sends SEND_MSRP to UE_B * } * then { * UE_B receives the SEND_MSRP containing * FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE * ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response * Content-Type_header indicating text/plain * } * } * </pre> */ function f_mtc_check_TP_MSRP_9000_01( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator return Request { var SipMessage v_sip := { request := valueof(m_INVITE_Dummy) }; var Request v_registerStep; boolean p_checkMessage, in SipMessage p_inviteReq ) runs on ImsTestCoordinator return SipMessage { var SipMessage v_sip := { msrpRequest := valueof(m_msrpSend_Dummy) }; var template MsrpURI v_fromPath; var SDP_media_desc_list v_medias; if (not(ispresent(p_inviteReq.request.messageBody))) { setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_01: 'messageBody' field not present ***"); } else if (not(ischosen(p_inviteReq.request.messageBody.sdpMessageBody))) { setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_01: 'sdpMessageBody' field not selected ***"); } else if (not(ispresent(p_inviteReq.request.messageBody.sdpMessageBody.media_list))) { setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_01: 'media_list' field not present ***"); } else { v_medias := p_inviteReq.request.messageBody.sdpMessageBody.media_list; if (lengthof(v_medias) == 0) { setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_01: 'media_list' is empty ***"); } else { // Extrat fromPath and toPath if (not(f_str2msrpUri(v_medias[0].attributes[0].msrp.attr_value, v_fromPath))) { // FIXME To be refined setverdict(inconc, self, fail, "*** f_mtc_check_TP_MSRP_9000_01: 'media_list' is empty ***"); } else { p_monitorCompRef.start( f_imsIot_receive( { // Pass criteria mw_MsrpRequest(mw_msrpSEND_any) mw_MsrpRequest( mw_msrpSEND_toPath_FromPath( mw_toPath(?), mw_fromPath(v_fromPath) ) ) }, { }, // Fail criteria {0, omit}, "TP_MSRP_9000_01", false, true, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve INVITE message // Retrieve MSRP SEND message f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); v_registerStep := v_sip.request; log("### f_mtc_check_TP_MSRP_9000_01: v_registerStep=", v_sip.request.messageBody.sdpMessageBody.media_list[0].attributes[0].msrp); log("### f_mtc_check_TP_MSRP_9000_01: v_sip=", v_sip.msrpRequest); return v_sip; } } } return v_registerStep return null; } // End of function f_mtc_check_TP_MSRP_9000_01 /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component * @param p_checkMessage TODO * <pre> * ensure that { * when { * UE_B receives SEND_MSRP from UE_A * } * then { * UE_B sends the 200_response_MSRP containing * FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE * ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response * } * } * </pre> */ function f_mtc_check_TP_MSRP_9000_02( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage boolean p_checkMessage, in SipMessage p_inviteResp, in SipMessage p_msrpSend ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( Loading