Commit dff32ac1 authored by garciay's avatar garciay
Browse files

Start implementation of MSRP protocol

parent a7788828
Loading
Loading
Loading
Loading
+88 −0
Original line number Diff line number Diff line
@@ -28,6 +28,12 @@ module AtsImsIot_Behavior {
	import from LibSip_SIPTypesAndValues all;
	
	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;}
		
@@ -4889,5 +4895,87 @@ group checksTC_IMS_SHARE_0009 {
        }
        
    }
    
    group msrpChecks {
        
        /**
         * @desc Starts monitor component behavior
         * @param p_monitorCompRef Reference to monitor component
         * @param p_checkMessage TODO
         */
        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;
            
            p_monitorCompRef.start(
             f_imsIot_receive(
                 { // Pass criteria
                     mw_MsrpRequest(mw_msrpSEND_any)
                 },
                 {}, // Fail criteria
                 {0, omit},
                 "TP_MSRP_9000_01",
                 false,
                 p_checkMessage
             )
            );
            p_monitorCompRef.done;
            
            // Retrieve INVITE 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);
            
            return v_registerStep
        } // 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
         */
        function f_mtc_check_TP_MSRP_9000_02( 
            ImsInterfaceMonitor p_monitorCompRef,
            boolean p_checkMessage
        ) runs on ImsTestCoordinator {
            p_monitorCompRef.start(
             f_imsIot_receive(
                 { // Pass criteria
                     mw_MsrpResponse(mw_msrpResponse_success)
                 },
                 {}, // Fail criteria
                 {0, omit},
                 "TP_MSRP_9000_01",
                 false,
                 p_checkMessage
             )
            );
            p_monitorCompRef.done;
        } // End of function f_mtc_check_TP_MSRP_9000_02
        
        
//        function f_mtc_check_TP_MSRP_9000_02_gm( 
//            ImsInterfaceMonitor p_monitorCompRef,
//            boolean p_checkMessage
//        ) runs on ImsTestCoordinator {
//            p_monitorCompRef.start(
//             f_imsIot_receive(
//                 {
//                     mw_SipRequest(mdw_TP_MSRP_9000_02(?))
//                 },
//                 {},
//                 {0, omit},
//                 "TP_MSRP_9000_02",
//                 false,
//                 p_checkMessage
//             )
//            );
//            p_monitorCompRef.done;
//        } // End of function f_mtc_check_TP_MSRP_9000_02_gm
        
    } // End of group msrpChecks
} // end group
}// end module
+30 −0
Original line number Diff line number Diff line
@@ -1118,6 +1118,36 @@ module AtsImsIot_Functions {
            return v_status;
        }

        /**
           * @desc Trigger UE given by p_ueRef to authenticate to MSRP Relay 
           * @param p_userCompRef Reference to IMS UE user component
           * @return
           *     true in case of successfull execution of the trigger command
           *     otherwise false
           * @see RFC 4976
           */
        function f_mtc_userInitiateMSRPAuthentication(EquipmentUser p_userCompRef) 
            runs on TestCoordinator return boolean {
            var boolean v_status := true; 
            // TODO
            return v_status;
        }

        /**
           * @desc Trigger UE given by p_ueRef to check that authentication to MSRP Relay succeed 
           * @param p_userCompRef Reference to IMS UE user component
           * @return
           *     true in case of successfull execution of the trigger command
           *     otherwise false
           * @see RFC 4976
           */
 		function f_mtc_userCheckMSRPAuthenticated(EquipmentUser p_ueRef) 
            runs on TestCoordinator return boolean {
     		var boolean v_status := true; 
     		// TODO
 			return v_status;
     		}

        /**
          * @desc Trigger UE given by p_ueRef to initiate chat conference 
          * @param p_ueRef Reference to IMS UE user component
+25 −0
Original line number Diff line number Diff line
@@ -27,6 +27,11 @@ module AtsImsIot_Templates {
	import from AtsImsIot_TypesAndValues {type NAPTRmessage;}
	import from LibSip_SIPTypesAndValues all;
	import from LibSip_Templates all;
    import from LibMsrp_TypesAndValues {
        type 
            SEND_request, 
            RECEIVE_response 
    };
	import from LibIot_PIXITS {
		modulepar
			PX_IOT_TIMESTAMP_OFFSET,
@@ -69,6 +74,26 @@ module AtsImsIot_Templates {
		}
	}//end group
	
	group sipMsrpMessages {
	    
		/**
		* @desc MSRP request template
		* @param p_msrpRequest MSRP request
		*/
		template SipMessage mw_MsrpRequest(in template (present) SEND_request p_msrpRequest) := {
            msrpRequest := p_msrpRequest
		}
        
		/**
		* @desc MSRP response template
		* @param p_msrpResponse MSRP response
		*/
		template SipMessage mw_MsrpResponse(in template (present) RECEIVE_response p_msrpResponse) := {
            msrpResponse := p_msrpResponse
		}
        
	} // End of group sipMsrpMessages

    group naptrTemplates {
        template NAPTRmessage mw_EnumQuery_Base	:= {
            enumMessage		:= {
+74 −2
Original line number Diff line number Diff line
@@ -9,7 +9,8 @@ module AtsImsIot_TestCases_RCS {
	import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }
	import from LibIms_UpperTester { type ImsUserInfo; }
	import from LibSip_SIPTypesAndValues { const	c_statusLine100, c_statusLine200, c_statusLine404, c_statusLine480,
	    											c_statusLine603; }
	    											c_statusLine603; 
	    									type Request };
	import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; }
	import from AtsImsIot_TestConfiguration { const all; function all; }
	import from LibIot_TestInterface {type IotEquipmentUser;}
@@ -2955,4 +2956,75 @@ module AtsImsIot_TestCases_RCS {
    } //end testcase TC_IMS_SHARE_0010








    /**
    * @desc Chat 1 to 1 procedure via MSRP
    * @see TS 102 901-2 V2.1.3 clause 5.4.1 Chat 1 to 1 procedure via MSRP
    */
    testcase TC_MSRP_CHAT_0001() runs on ImsTestCoordinator system IotSystemInterface {
        
        var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A);
        var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B);
        var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A);
        var ImsInterfaceMonitor v_gmB := f_cf_create_monitor(c_gm_B);
        var ImsInterfaceMonitor v_ic := f_cf_create_monitor(c_ic);
        var ImsInterfaceMonitor v_iscA := f_cf_create_monitor(c_isc_A);
        var ImsInterfaceMonitor v_iscB := f_cf_create_monitor(c_isc_B);
        var ImsUserInfo v_userInfoA := f_getPresUser(PX_EUT_A);
        var ImsUserInfo v_userInfoB := f_getPresUser(PX_EUT_B); 
        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 Request v_registerStep;
                    
        // map/connect component ports
        f_cf_adapter_up ( );
        f_cf_user_up ( v_ueA );
        f_cf_user_up ( v_ueB );
        f_cf_int_as_up ( v_config );
		
        // preamble
        f_mtc_userRegistration ( v_ueA, v_userInfoA ); 
        f_mtc_userRegistration ( v_ueB, v_userInfoB ); 
        
        f_mtc_userAddNewMediaStream(v_ueA); // Add MSRP support
        f_mtc_userAddNewMediaStream(v_ueB);
        
        f_mtc_StartAllTrafficCapture();
        
        f_mtc_userInitiateChat (v_ueA, v_userInfoB); // Initiate chat
        f_mtc_userCheckChatInfo(v_ueA);
        f_mtc_userCheckPeerChatInfo(v_ueB);
        
        f_mtc_userInitiateMSRPAuthentication(v_ueA);
        f_mtc_userInitiateMSRPAuthentication(v_ueB);
        
        // test body
        f_mtc_userCheckChating(v_ueA,v_ueB);        // Step 1: User A writes a chat message
        v_registerStep := f_mtc_check_TP_MSRP_9000_01(v_gmB, true);   // Step 2: UE_B receives the SEND_MSRP
        f_mtc_check_TP_MSRP_9000_02(v_gmA, true);   // Step3: UE B responds with 200 OK to UE A
        
        
        
        // postamble
        f_mtc_EndChat(v_ueA); // Terminate chat
        f_mtc_userCheckChatEnded(v_ueA);
        f_mtc_userCheckChatEnded(v_ueB);
        
        f_PO_user_home_deregistration(v_ueA);
        f_PO_user_home_deregistration(v_ueB);
        
        //unmap/disconnet component ports
        f_cf_user_down(v_ueA);
        f_cf_user_down(v_ueB);
        f_cf_int_as_down(v_config);
        f_cf_adapter_down();
    } // End of testcase TC_MSRP_CHAT_0001


}//end module AtsImsIot_TestCases_RCS
 No newline at end of file
+9 −2
Original line number Diff line number Diff line
@@ -6,8 +6,13 @@

module AtsImsIot_TypesAndValues {

	import from LibSip_SIPTypesAndValues {type Request, SipUrl, Response;}
    import from LibCommon_BasicTypesAndValues all;
	import from LibSip_SIPTypesAndValues {type Request, SipUrl, Response;}
    import from LibMsrp_TypesAndValues {
        type 
            SEND_request, 
            RECEIVE_response 
    };

	group SIPmessageTypes {
		/**
@@ -17,7 +22,9 @@ module AtsImsIot_TypesAndValues {
		*/
		type union SipMessage {
			Request request,
			Response response	
			Response response,
            SEND_request msrpRequest,
            RECEIVE_response msrpResponse
		}
		/**
		* @desc SIP Message List Type