Loading AtsImsIot/AtsImsIot_Behavior.ttcn +62 −32 Original line number Diff line number Diff line Loading @@ -49,9 +49,12 @@ module AtsImsIot_Behavior { }; import from LibMsrp_Templates { template m_msrpSend_Dummy, mw_msrpSEND_toPath_FromPath, mw_msrpResponse_success, mw_toPath, mw_fromPath m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, mw_toPath, mw_fromPath, m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, mw_contentType }; group checks { Loading Loading @@ -4974,6 +4977,8 @@ group checksTC_IMS_SHARE_0009 { * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component * @param p_checkMessage TODO * @param p_inviteReq INVITE request message * @param p_inviteResp INVITE 200 OK response message * <pre> * ensure that { * when { Loading @@ -4991,12 +4996,16 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_TP_MSRP_9000_01( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage, in SipMessage p_inviteReq ) runs on ImsTestCoordinator return SipMessage { in SipMessage p_inviteReq, in SipMessage p_inviteResp ) runs on ImsTestCoordinator { var SipMessage v_sip := { msrpRequest := valueof(m_msrpSend_Dummy) }; var template MsrpURI v_fromPath; var SDP_media_desc_list v_medias; var template MsrpURI v_toPath := valueof(m_msrpURIs_ToPath_Dummy); var template MsrpURI v_fromPath := valueof(m_msrpURIs_FromPath_Dummy); var SDP_media_desc_list v_mediasFromInvite; // Used to extract media description list from SDP in the INVITE request message var SDP_media_desc_list v_mediasFromResponse; // Used to extract media description list from SDP in the INVITE 200 OK response message // Sanity checks 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))) { Loading @@ -5004,21 +5013,25 @@ group checksTC_IMS_SHARE_0009 { } 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) { v_mediasFromInvite := p_inviteReq.request.messageBody.sdpMessageBody.media_list; v_mediasFromResponse := p_inviteResp.response.messageBody.sdpMessageBody.media_list; if (lengthof(v_mediasFromInvite) == 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 if ( not(f_str2msrpUri(v_mediasFromResponse[0].attributes[0].msrp.attr_value, v_toPath)) or not(f_str2msrpUri(v_mediasFromInvite[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_toPath_FromPath( mw_toPath(?), mw_fromPath(v_fromPath) mw_msrpSEND_toPath_fromPath_contentType( mw_toPath(v_toPath), // ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response mw_fromPath(v_fromPath), // FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE mw_contentType("text", "plain") // Content-Type_header indicating text/plain ) ) }, Loading @@ -5034,19 +5047,17 @@ group checksTC_IMS_SHARE_0009 { // Retrieve MSRP SEND message f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); log("### f_mtc_check_TP_MSRP_9000_01: v_sip=", v_sip.msrpRequest); return v_sip; } } } 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 * @param p_inviteReq INVITE request message * @param p_inviteResp INVITE 200 OK response message * <pre> * ensure that { * when { Loading @@ -5063,22 +5074,41 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_TP_MSRP_9000_02( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage, in SipMessage p_inviteResp, in SipMessage p_msrpSend in SipMessage p_inviteReq, in SipMessage p_inviteResp ) runs on ImsTestCoordinator { var SipMessage v_sip := { msrpResponse := valueof(m_msrpResponse_Dummy) }; var template MsrpURI v_toPath := valueof(m_msrpURIs_ToPath_Dummy); var template MsrpURI v_fromPath := valueof(m_msrpURIs_FromPath_Dummy); var SDP_media_desc_list v_mediasFromInvite; // Used to extract media description list from SDP in the INVITE request message var SDP_media_desc_list v_mediasFromResponse; // Used to extract media description list from SDP in the INVITE 200 OK response message // Note that sanity checks were done in TP_MSRP_9000_01 v_mediasFromInvite := p_inviteReq.request.messageBody.sdpMessageBody.media_list; v_mediasFromResponse := p_inviteResp.response.messageBody.sdpMessageBody.media_list; p_monitorCompRef.start( f_imsIot_receive( { // Pass criteria mw_MsrpResponse(mw_msrpResponse_success) mw_MsrpResponse(mw_msrpResponse_toPath_fromPath( mw_toPath(v_toPath), // ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response mw_fromPath(v_fromPath) // FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE )) }, { }, // Fail criteria {0, omit}, "TP_MSRP_9000_01", false, true, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve MSRP SEND message f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); log("### f_mtc_check_TP_MSRP_9000_02: v_sip=", v_sip.msrpResponse); } // End of function f_mtc_check_TP_MSRP_9000_02 Loading AtsImsIot/AtsImsIot_TestCases_RCS.ttcn +6 −5 Original line number Diff line number Diff line Loading @@ -2980,9 +2980,8 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := { v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB }; var SipMessage v_inviteReq; var SipMessage v_inviteResp; var SipMessage v_msrpRequest; var SipMessage v_inviteReq; // Used to store INVITE request message var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message // map/connect component ports f_cf_adapter_up ( ); Loading @@ -3002,7 +3001,9 @@ module AtsImsIot_TestCases_RCS { f_mtc_userInitiateChat (v_ueA, v_userInfoB); // Initiate chat // Retrieve INVITE sent by UE_A on gmA and save it v_inviteReq := f_mtc_check_TP_IMS_9000_invite_req(v_gmA, true); f_mtc_check_TP_IMS_5097_01_gm(v_gmA, true); // Check1 f_mtc_check_TP_IMS_5097_02_gm(v_gmA, true); // Check2 v_inviteReq := f_mtc_check_TP_IMS_9000_invite_req(v_gmA, false); // Retrieve RESPONSE 200 OK from UEB on gmA and save it v_inviteResp := f_mtc_check_TP_IMS_9000_invite_resp(v_gmA, true, c_statusLine200); Loading @@ -3014,7 +3015,7 @@ module AtsImsIot_TestCases_RCS { // test body f_mtc_userCheckChating(v_ueA,v_ueB); // Step 1: User A writes a chat message v_msrpRequest := f_mtc_check_TP_MSRP_9000_01(v_gmB, true, v_inviteReq); // Step 2: UE_B receives the SEND_MSRP f_mtc_check_TP_MSRP_9000_01(v_gmB, true, v_inviteReq, v_inviteResp); // Step 2: UE_B receives the SEND_MSRP f_mtc_check_TP_MSRP_9000_02(v_gmA, true, v_inviteReq, v_inviteResp); // Step3: UE B responds with 200 OK to UE A // postamble Loading AtsImsIot/AtsImsIot_TypesAndValues.ttcn +2 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ module AtsImsIot_TypesAndValues { * @desc SIP Message Type * @member request SIP request * @member response SIP response * @member msrpRequest MSRP SEND/AUTH request messages * @member msrpResponse MSRP response message */ type union SipMessage { Request request, Loading Loading
AtsImsIot/AtsImsIot_Behavior.ttcn +62 −32 Original line number Diff line number Diff line Loading @@ -49,9 +49,12 @@ module AtsImsIot_Behavior { }; import from LibMsrp_Templates { template m_msrpSend_Dummy, mw_msrpSEND_toPath_FromPath, mw_msrpResponse_success, mw_toPath, mw_fromPath m_msrpSend_Dummy, mw_msrpSEND_toPath_fromPath_contentType, m_msrpResponse_Dummy, mw_msrpResponse_toPath_fromPath, mw_toPath, mw_fromPath, m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, mw_contentType }; group checks { Loading Loading @@ -4974,6 +4977,8 @@ group checksTC_IMS_SHARE_0009 { * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component * @param p_checkMessage TODO * @param p_inviteReq INVITE request message * @param p_inviteResp INVITE 200 OK response message * <pre> * ensure that { * when { Loading @@ -4991,12 +4996,16 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_TP_MSRP_9000_01( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage, in SipMessage p_inviteReq ) runs on ImsTestCoordinator return SipMessage { in SipMessage p_inviteReq, in SipMessage p_inviteResp ) runs on ImsTestCoordinator { var SipMessage v_sip := { msrpRequest := valueof(m_msrpSend_Dummy) }; var template MsrpURI v_fromPath; var SDP_media_desc_list v_medias; var template MsrpURI v_toPath := valueof(m_msrpURIs_ToPath_Dummy); var template MsrpURI v_fromPath := valueof(m_msrpURIs_FromPath_Dummy); var SDP_media_desc_list v_mediasFromInvite; // Used to extract media description list from SDP in the INVITE request message var SDP_media_desc_list v_mediasFromResponse; // Used to extract media description list from SDP in the INVITE 200 OK response message // Sanity checks 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))) { Loading @@ -5004,21 +5013,25 @@ group checksTC_IMS_SHARE_0009 { } 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) { v_mediasFromInvite := p_inviteReq.request.messageBody.sdpMessageBody.media_list; v_mediasFromResponse := p_inviteResp.response.messageBody.sdpMessageBody.media_list; if (lengthof(v_mediasFromInvite) == 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 if ( not(f_str2msrpUri(v_mediasFromResponse[0].attributes[0].msrp.attr_value, v_toPath)) or not(f_str2msrpUri(v_mediasFromInvite[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_toPath_FromPath( mw_toPath(?), mw_fromPath(v_fromPath) mw_msrpSEND_toPath_fromPath_contentType( mw_toPath(v_toPath), // ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response mw_fromPath(v_fromPath), // FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE mw_contentType("text", "plain") // Content-Type_header indicating text/plain ) ) }, Loading @@ -5034,19 +5047,17 @@ group checksTC_IMS_SHARE_0009 { // Retrieve MSRP SEND message f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); log("### f_mtc_check_TP_MSRP_9000_01: v_sip=", v_sip.msrpRequest); return v_sip; } } } 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 * @param p_inviteReq INVITE request message * @param p_inviteResp INVITE 200 OK response message * <pre> * ensure that { * when { Loading @@ -5063,22 +5074,41 @@ group checksTC_IMS_SHARE_0009 { function f_mtc_check_TP_MSRP_9000_02( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage, in SipMessage p_inviteResp, in SipMessage p_msrpSend in SipMessage p_inviteReq, in SipMessage p_inviteResp ) runs on ImsTestCoordinator { var SipMessage v_sip := { msrpResponse := valueof(m_msrpResponse_Dummy) }; var template MsrpURI v_toPath := valueof(m_msrpURIs_ToPath_Dummy); var template MsrpURI v_fromPath := valueof(m_msrpURIs_FromPath_Dummy); var SDP_media_desc_list v_mediasFromInvite; // Used to extract media description list from SDP in the INVITE request message var SDP_media_desc_list v_mediasFromResponse; // Used to extract media description list from SDP in the INVITE 200 OK response message // Note that sanity checks were done in TP_MSRP_9000_01 v_mediasFromInvite := p_inviteReq.request.messageBody.sdpMessageBody.media_list; v_mediasFromResponse := p_inviteResp.response.messageBody.sdpMessageBody.media_list; p_monitorCompRef.start( f_imsIot_receive( { // Pass criteria mw_MsrpResponse(mw_msrpResponse_success) mw_MsrpResponse(mw_msrpResponse_toPath_fromPath( mw_toPath(v_toPath), // ToPath_header indicating the msrp_path from SDP attribute within SIP 200_response mw_fromPath(v_fromPath) // FromPath_header indicating the msrp_path from SDP attribute within SIP INVITE )) }, { }, // Fail criteria {0, omit}, "TP_MSRP_9000_01", false, true, p_checkMessage ) ); p_monitorCompRef.done; // Retrieve MSRP SEND message f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); log("### f_mtc_check_TP_MSRP_9000_02: v_sip=", v_sip.msrpResponse); } // End of function f_mtc_check_TP_MSRP_9000_02 Loading
AtsImsIot/AtsImsIot_TestCases_RCS.ttcn +6 −5 Original line number Diff line number Diff line Loading @@ -2980,9 +2980,8 @@ module AtsImsIot_TestCases_RCS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_AS v_config := { v_gmA, v_mxA, v_ic, v_mxB, v_gmB, v_iscA, v_iscB }; var SipMessage v_inviteReq; var SipMessage v_inviteResp; var SipMessage v_msrpRequest; var SipMessage v_inviteReq; // Used to store INVITE request message var SipMessage v_inviteResp; // Used to store INVITE 200 OK response message // map/connect component ports f_cf_adapter_up ( ); Loading @@ -3002,7 +3001,9 @@ module AtsImsIot_TestCases_RCS { f_mtc_userInitiateChat (v_ueA, v_userInfoB); // Initiate chat // Retrieve INVITE sent by UE_A on gmA and save it v_inviteReq := f_mtc_check_TP_IMS_9000_invite_req(v_gmA, true); f_mtc_check_TP_IMS_5097_01_gm(v_gmA, true); // Check1 f_mtc_check_TP_IMS_5097_02_gm(v_gmA, true); // Check2 v_inviteReq := f_mtc_check_TP_IMS_9000_invite_req(v_gmA, false); // Retrieve RESPONSE 200 OK from UEB on gmA and save it v_inviteResp := f_mtc_check_TP_IMS_9000_invite_resp(v_gmA, true, c_statusLine200); Loading @@ -3014,7 +3015,7 @@ module AtsImsIot_TestCases_RCS { // test body f_mtc_userCheckChating(v_ueA,v_ueB); // Step 1: User A writes a chat message v_msrpRequest := f_mtc_check_TP_MSRP_9000_01(v_gmB, true, v_inviteReq); // Step 2: UE_B receives the SEND_MSRP f_mtc_check_TP_MSRP_9000_01(v_gmB, true, v_inviteReq, v_inviteResp); // Step 2: UE_B receives the SEND_MSRP f_mtc_check_TP_MSRP_9000_02(v_gmA, true, v_inviteReq, v_inviteResp); // Step3: UE B responds with 200 OK to UE A // postamble Loading
AtsImsIot/AtsImsIot_TypesAndValues.ttcn +2 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ module AtsImsIot_TypesAndValues { * @desc SIP Message Type * @member request SIP request * @member response SIP response * @member msrpRequest MSRP SEND/AUTH request messages * @member msrpResponse MSRP response message */ type union SipMessage { Request request, Loading