Commit 1a39fa90 authored by garciay's avatar garciay
Browse files

Add MSRP support

parent e0532c33
Loading
Loading
Loading
Loading
+62 −32
Original line number Diff line number Diff line
@@ -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 {
@@ -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 { 
@@ -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))) {
@@ -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
                                        )
                                    )
                                },
@@ -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 { 
@@ -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
        
        
+6 −5
Original line number Diff line number Diff line
@@ -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 ( );
@@ -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);
        
@@ -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
+2 −0
Original line number Diff line number Diff line
@@ -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,