Commit be5a2fda authored by wattelet's avatar wattelet
Browse files

New ENUM and RCS-e Capabilities TCs

parent 9e31dc69
Loading
Loading
Loading
Loading
+83 −24
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ module AtsImsIot_Behavior {
	import from AtsImsIot_Templates {template all;}

	import from AtsImsIot_TypesAndValues {
		type SipMessage, SipMessageList, SkipType;
		type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType;
	}
		
	
@@ -28,7 +28,6 @@ module AtsImsIot_Behavior {
	import from LibSip_SIPTypesAndValues all;
	
	import from LibSip_Templates all;
	
	import from AtsImsIot_Functions all;
	import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;}
		
@@ -907,6 +906,7 @@ group checksTC_IMS_CALL_0001 {
    		ImsInterfaceMonitor p_monitorCompRef,
    		boolean p_checkMessage
    	) runs on ImsTestCoordinator {
            var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B);
            p_monitorCompRef.start(
    		f_imsIot_receive(
    			{mw_SipRequest(mdw_TP_IMS_5097_04_gm(mw_TEL_URI_Base))},//TODO check TEL_URI of UE_B
@@ -928,9 +928,10 @@ group checksTC_IMS_CALL_0001 {
			ImsInterfaceMonitor p_monitorCompRef,
			boolean p_checkMessage
		) runs on ImsTestCoordinator {
            var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
   			p_monitorCompRef.start(
     		f_imsIot_receive(
				{mw_SipRequest(mdw_TP_IMS_5097_04_ic(mw_SIP_URI_Base))},//TODO check SIP_URI of UE_B
				{mw_SipRequest(mdw_TP_IMS_5097_04_ic(v_eutBUri))},
				{mw_SipRequest(mw_INVITE_Request_Base)},
				{0, omit},
				"TP_IMS_5097_04",
@@ -940,6 +941,49 @@ group checksTC_IMS_CALL_0001 {
			);
			p_monitorCompRef.done;
		}
	    /**
	    * @desc Starts monitor component behavior for TP_IMS_ENUM_01
	    * @param p_gm Reference to Gm monitor component
	    * @param p_naptr Reference to NAPTR monitor component
	    */
 		function f_mtc_check_TP_IMS_ENUM_01 ( ImsInterfaceMonitor p_gm, ImsInterfaceMonitor p_naptr)
 		runs on ImsTestCoordinator {
            var EnumQuery		v_enumQuery;
            var EnumResponse	v_enumResponse;
 	  		f_mtc_check_TP_IMS_ENUM_01_gm	( p_gm, false );							// SIP INVITE
            v_enumQuery		:= f_mtc_check_TP_IMS_ENUM_01_enumQuery	( p_naptr );		// ENUM query
			//TODO check ENUM query message as described in the spec.
            v_enumResponse	:= f_mtc_check_TP_IMS_ENUM_01_enumResponse	( p_naptr );	// ENUM response
			//TODO check ENUM response message as described in the spec.
 		}
 		function f_mtc_check_TP_IMS_ENUM_01_gm		(  ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage )
 		runs on ImsTestCoordinator {
            p_monitorCompRef.start (
	    		f_imsIot_receive (
	    			{ mw_SipRequest ( mdw_TP_IMS_5097_04_gm ( mw_TEL_URI_Base )) },
	    			{ }, { 0, omit }, "TP_IMS_ENUM_01", false, p_checkMessage
    			)
    		);
    		p_monitorCompRef.done;
 		}
    	function f_mtc_check_TP_IMS_ENUM_01_enumQuery	(  ImsInterfaceMonitor p_monitorCompRef )
    	runs on ImsTestCoordinator return EnumQuery {
            var NAPTRmessage	v_naptr;
 			p_monitorCompRef.start (
            	f_getNaptrMsg ( p_monitorCompRef, { query := ? }, v_naptr )
         	);
        	p_monitorCompRef.done;
			return v_naptr.enumMessage.query;
    	}
  		function f_mtc_check_TP_IMS_ENUM_01_enumResponse	(  ImsInterfaceMonitor p_monitorCompRef )
 		runs on ImsTestCoordinator return EnumResponse {
            var NAPTRmessage	v_naptr;
            p_monitorCompRef.start (
            	f_getNaptrMsg ( p_monitorCompRef, { response := ? }, v_naptr )
    		);
    		p_monitorCompRef.done;
			return v_naptr.enumMessage.response;
 		}
  
	    /**
		 * @desc Starts monitor component behavior 
@@ -3992,9 +4036,10 @@ group checksTC_IMS_SHARE_0009 {
	    	ImsInterfaceMonitor p_monitorCompRef,
	    	boolean p_checkMessage
	    ) runs on ImsTestCoordinator {
            var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B);
            p_monitorCompRef.start(
       		f_imsIot_receive(
                {mw_SipRequest(mdw_TP_IMS_5097_08_gm(*))},
                {mw_SipRequest(mdw_TP_IMS_5097_08_gm(mw_TEL_URI_Base))},
                {mw_SipRequest(mw_MESSAGE_Request_Base)},
                {0, omit},
                "TP_IMS_5097_08",
@@ -4014,9 +4059,10 @@ group checksTC_IMS_SHARE_0009 {
	    	ImsInterfaceMonitor p_monitorCompRef,
	    	boolean p_checkMessage
	    ) runs on ImsTestCoordinator {
            var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
            p_monitorCompRef.start(
            f_imsIot_receive(
                {mw_SipRequest(mdw_TP_IMS_5097_08_ic(*))},
                {mw_SipRequest(mdw_TP_IMS_5097_08_ic(v_eutBUri))},
                {mw_SipRequest(mw_MESSAGE_Request_Base)},
                {0, omit},
                "TP_IMS_5097_08",
@@ -4805,6 +4851,19 @@ group checksTC_IMS_SHARE_0009 {
           p_monitorCompRef.done;
        }

        function f_mtc_check_options ( ImsInterfaceMonitor p_monitorCompRef, charstring p_rcsCap ) runs on ImsTestCoordinator {
			p_monitorCompRef.start (	f_imsIot_receive (	{ mw_SipRequest( mw_OPTIONS_Request ( p_rcsCap ) ) },
            							{ }, { 0, omit }, "f_mtc_check_options", false, false ) );
			p_monitorCompRef.done;
        }
        
        function f_mtc_check_response (	ImsInterfaceMonitor p_monitorCompRef, template StatusLine p_statusLine,
        								charstring p_rcsCap ) runs on ImsTestCoordinator {
			p_monitorCompRef.start (	f_imsIot_receive (	{ mw_SipResponse ( mw_Response ( p_statusLine, p_rcsCap ) ) },
            							{ }, { 0, omit },"f_mtc_check_response", false, false ) );
			p_monitorCompRef.done;
        }

        function f_mtc_check_response_mx(
            ImsInterfaceMonitor p_monitorCompRef,
            template StatusLine p_statusLine
+74 −33
Original line number Diff line number Diff line
@@ -5,31 +5,17 @@
 */
module AtsImsIot_Functions {
 
 	import from AtsImsIot_Templates {template mw_SIP_URI_Base;}

 	import from AtsImsIot_Templates { template mw_EnumQuery_Base, mw_EnumResponse_Base, mw_SIP_URI_Base; }
 	import from AtsImsIot_TestSystem all;
 	import from LibSip_SIPTypesAndValues all;

 	import from AtsImsIot_TestSystem {
 		type ImsTestCoordinator, ImsInterfaceMonitor;
 	}

 	import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; }
 	import from LibIot_PIXITS { modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS, PX_AVAILABLE_INTERFACES; }
	import from LibIot_Functions {
		function f_setConformanceVerdict;
	}
	
 	import from AtsImsIot_TypesAndValues {
 		type SipMessage, SipMessageList, SkipType;
 	}

	import from LibIot_Functions { function f_setConformanceVerdict, f_sendEquipmentCmd; }
 	import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType; }
    import from LibIms_UpperTester all;

	import from LibIot_TestInterface {
        type InterfaceMonitor, TestCoordinator, EquipmentUser;
    }
 	
 	import from LibUpperTester all;
	import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; }
 	import from LibIot_Functions { function f_getE2EVerdict; }

	import from LibIot_TypesAndValues { type DefaultList; }
 	
 	group ue {
@@ -538,8 +524,6 @@ module AtsImsIot_Functions {
 			return v_status;
     		}
 		

 		
 		/**
		  * @desc Starts user component behaviour for registration from test coordinator
		  * @param p_userCompRef Reference to IMS UE user component
@@ -683,6 +667,22 @@ module AtsImsIot_Functions {
     		return v_success;
 		}

        /**
           * @desc Trigger UE given by p_ueRef to send SIP OPTIONS message
           * @param p_userCompRef Reference to IMS UE user component
           * @return
           *     true in case of successfull execution of the trigger command
           *     otherwise false
           */
        function f_mtc_triggerUserOptions ( EquipmentUser p_userCompRef, EquipmentCommand p_command )
        runs on ImsTestCoordinator return boolean {
 			var boolean v_success := false;
 			p_userCompRef.start ( f_sendEquipmentCmd ( valueof ( m_EQ_Request ( p_command, { } ) ) ) );
 			p_userCompRef.done;
 			if ( f_getE2EVerdict() == pass ) { v_success := true; }
			return v_success;
 		}

        /**
           * @desc Trigger UE given by p_ueRef to publishes presence information
           * @param p_userCompRef Reference to IMS UE user component
@@ -2388,6 +2388,47 @@ module AtsImsIot_Functions {
           }
     	}

 	group naptrComponent {
 		/**
		* @desc
		*     This function waits for a given NAPTR message.
		* @param p_monitor Reference of NAPTR component
		* @param p_msg The NAPTR message
		*/
	 	function f_getNaptrMsg ( InterfaceMonitor p_monitor, in template (present) EnumMessage p_enum, out template (present) NAPTRmessage p_msg )
	 	runs on ImsInterfaceMonitor {
            timer	t_local	:= PX_MAX_MSG_WAIT;
            var boolean	v_loop	:= true;
            t_local.start;
            while ( v_loop ) {            
	            alt {
                    []	naptrPort.receive ( mw_EnumQuery_Base ) -> value p_msg {
            	   		if ( match ( p_enum, p_msg.enumMessage )) {
							t_local.stop;
							setverdict(pass, self, "***f_getNaptrMsg: expected NAPTR message received***");
							break;
		    			} 
            			t_local.start;
            		}
                    []	naptrPort.receive ( mw_EnumResponse_Base ) -> value p_msg {
                        if ( match ( p_enum, p_msg.enumMessage )) {
                            t_local.stop;
                            setverdict(pass, self, "***f_getNaptrMsg: expected NAPTR message received***");
                            break;
                        } 
                        t_local.start;
                    }
             		[]	t_local.timeout {
            	   		setverdict(fail, self, "***f_getNaptrMsg: expected NAPTR message not received***");    
						break;
            		}
 		           	[]	naptrPort.receive {
            	   		t_local.start;
            		}
                }
           	}
        }	
 	}
 
 	group interComponent {
 		/**
+66 −17
Original line number Diff line number Diff line
@@ -7,9 +7,7 @@
module AtsImsIot_Templates {

	import from LibCommon_BasicTypesAndValues {type UInt16;}
	
	import from LibCommon_VerdictControl {type FncRetCode;}
	
	import from LibIot_TypesAndValues {
		type
			InterfaceInfoList,
@@ -26,11 +24,9 @@ module AtsImsIot_Templates {
			Status;
	}
    import from AtsImsIot_TypesAndValues {type SipMessage;}

	import from AtsImsIot_TypesAndValues {type NAPTRmessage;}
	import from LibSip_SIPTypesAndValues all;
	
	import from LibSip_Templates all;
	
	import from LibIot_PIXITS {
		modulepar
			PX_IOT_TIMESTAMP_OFFSET,
@@ -49,12 +45,11 @@ module AtsImsIot_Templates {
			interfaceInfos := p_iterfaces
		}
		
		template SetFilterRsp mw_SetFilterRsp(template Status p_status) := {
		template SetFilterRsp mw_SetFilterRsp(in template (present) Status p_status) := {
			status := p_status
		}
	}
	
	
	group sipTemplates {
    
		/**
@@ -74,6 +69,59 @@ module AtsImsIot_Templates {
		}
	}//end group

    group naptrTemplates {
        template NAPTRmessage mw_EnumQuery_Base	:= {
            enumMessage		:= {
                query	:= {
                    e164TelNumber		:= ?
                }
            }
        }
        template NAPTRmessage mw_EnumResponse_Base	:= {
            enumMessage		:= {
                response	:= {
                    ttl				:= ?,
                    naptrType		:= 35,
                    sipUri			:= ?,
                    naptrRegexp		:= ?
                }
            }
        }
    }

	group rcseTemplates {
		template OPTIONS_Request mw_OPTIONS_Request	( charstring p_rcseTags ) := {
	        requestLine		:= { method := OPTIONS_E, requestUri := ?, sipVersion := c_sipNameVersion },
        	msgHeader		:= mw_msgHeader_Options ( p_rcseTags ),
            messageBody		:= *,
        	payload			:= *
		}

		template Response mw_Response (	template StatusLine p_statusLine, charstring p_rcseTags ) := {
			statusLine		:= p_statusLine,
        	msgHeader		:= mw_msgHeader_Options ( p_rcseTags ),
			messageBody		:= *,
			payload			:= *
		}

        template MessageHeader mw_msgHeader_Options	( charstring p_rcseTags ) modifies mw_msgHeader_dummy := {
            acceptContact					:= {
                fieldName					:= ACCEPT_CONTACT_E,
                acValues					:= superset ( mw_Rcse_Tags ( p_rcseTags ) )
            }
        }

        template AcRcValue mw_Rcse_Tags	( charstring p_rcseTags ) := {
            wildcard	:= c_WILDCARD,
            acRcParams	:= superset ( mw_User_Caps ( p_rcseTags ))
        }

		template GenericParam mw_User_Caps ( charstring p_rcseTags ) := {
		  	id := ?,
		  	paramValue := p_rcseTags
		}
	}
	
	group modifiedSIPBaseTemplates {
		
		/**
@@ -644,10 +692,12 @@ module AtsImsIot_Templates {
	/**
	  * @desc INVITE Request checking TP_IMS_5097_04
	  */
	template INVITE_Request mdw_TP_IMS_5097_04_ic(template SipUrl p_requestUri)
	template INVITE_Request mdw_TP_IMS_5097_04_ic(in template (present) SipUrl p_requestUri)
	 modifies mw_INVITE_Request_Base := {
	  requestLine := {
		requestUri := p_requestUri
        method := INVITE_E,
		requestUri := p_requestUri,
        sipVersion := c_sipNameVersion
	  },
	  msgHeader := {        
		pChargingVector := {
@@ -666,13 +716,13 @@ module AtsImsIot_Templates {
	  * 
	  * @desc BYE Request checking TP_IMS_5107_01 on MW
	  */
	template BYE_Request mdw_TP_IMS_5107_01_ic(template CallId p_callId, template SipUrl p_SCSCF_SIP_URI)
	template BYE_Request mdw_TP_IMS_5107_01_ic(template CallId p_callId, in template (present)  SipUrl p_SCSCF_SIP_URI)
	 modifies mw_BYE_Request_Base := {
	  msgHeader := {
		route := {
			fieldName := ROUTE_E,
			routeBody := {
				*, 
				?, 
				complement(mw_routeBody(p_SCSCF_SIP_URI)),
				*
			}
@@ -1536,16 +1586,15 @@ module AtsImsIot_Templates {
    }
    
    template MESSAGE_Request mdw_TP_IMS_5097_08_gm(
      template CallId p_callId
    	template SipUrl p_requestUri
    ) modifies mw_MESSAGE_Request_Base := {
       requestLine := { requestUri := mw_TEL_URI_Base }
       requestLine := { requestUri := p_requestUri }
    }
    
    template MESSAGE_Request mdw_TP_IMS_5097_08_ic(
      template CallId p_callId
    	template SipUrl p_requestUri
    ) modifies mw_MESSAGE_Request_Base := {
       requestLine := { 
       		requestUri := mw_SIP_URI_Base 
       requestLine := { requestUri := p_requestUri 
       	},
       	msgHeader := {
       		pChargingVector := {
+66 −0
Original line number Diff line number Diff line
/**
 *	@author 	STF 435
 *	@version  $Id: $
 *	@desc	This module provides ATS specific ENUM test case.
 */
module AtsImsIot_TestCases_ENUM {

	import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B; }
	import from LibIms_UpperTester { type ImsUserInfo; }
	import from LibSip_SIPTypesAndValues { const c_statusLine100, c_statusLine180, c_statusLine200; }
	import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; }
	import from LibIot_TestInterface { type IotEquipmentUser; }
	import from AtsImsIot_TestSystem { type CF_INT_CALL, ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; }
	import from AtsImsIot_TestConfiguration { const all; function all; }
	import from AtsImsIot_Functions { function all; }
	import from AtsImsIot_Behavior { function all; }
	
	
	/**
	* @desc ENUM query should result in return of NAPTR with correct SIP URI
	*/
	testcase TD_IMS_ENUM_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface {
		var CF_INT_CALL			v_config;
		var ImsUserInfo			v_userInfoA		:= f_getSipUserId ( PX_EUT_A );
		var ImsUserInfo			v_userInfoB		:= f_getSipUserId ( PX_EUT_B );
		var ImsUserInfo			v_userTelInfoB	:= f_getTelUserId ( PX_EUT_B );
		var IotEquipmentUser	v_ueA			:= f_cf_create_IotEquipmentUser ( c_userUE_A );
		var IotEquipmentUser	v_ueB			:= f_cf_create_IotEquipmentUser ( c_userUE_B );

		// create components
		v_config.gmA	:= f_cf_create_monitor ( c_gm_A );
		v_config.gmB	:= f_cf_create_monitor ( c_gm_B );
		v_config.ici	:= f_cf_create_monitor ( c_ic );
		v_config.mxA	:= f_cf_create_monitor ( c_mx_A );
		v_config.mxB	:= f_cf_create_monitor ( c_mx_B );
		v_config.naptr	:= f_cf_create_monitor ( c_naptr );
				
		// map/connect component ports
		f_cf_adapter_up ( );
		f_cf_user_up ( v_ueA );
		f_cf_user_up ( v_ueB );
		f_cf_int_call_up ( v_config );
		
		// preamble
		f_mtc_userRegistration ( v_ueA, v_userInfoA ); 
		f_mtc_userRegistration ( v_ueB, v_userInfoB ); 
		
		// test body
		f_mtc_userInitiateCall ( v_ueA, v_userTelInfoB ); // UE A invite UE B by using Tel number
		
		// check 1 (INVITE + ENUM db exchange)
		f_mtc_check_TP_IMS_ENUM_01 ( v_config.gmA, v_config.naptr );
		// check 2 (INVITE arrived at gmB)
		f_mtc_check_TP_IMS_5097_01_gm ( v_config.gmB, false );

		// postamble
		f_PO_user_home_deregistration ( v_ueA );
		f_PO_user_home_deregistration ( v_ueB );
		f_cf_int_call_down ( v_config );
		
		//unmap/disconnet component ports
		f_cf_user_down ( v_ueA );
		f_cf_user_down ( v_ueB );
		f_cf_adapter_down ( );
	}
}
 No newline at end of file
+13 −28
Original line number Diff line number Diff line
@@ -6,36 +6,18 @@
module AtsImsIot_TestCases_MESS {
	
	import from AtsImsIot_Behavior {function all;}

	import from AtsImsIot_Functions {function all;}
	
    import from LibSip_SIPTypesAndValues {const c_statusLine200;}
	
	import from LibCommon_VerdictControl {type FncRetCode;}

	import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;}

	import from LibIms_UpperTester {type ImsUserInfo;}

	import from LibIot_TestConfiguration {
		function f_cf_create_IotEquipmentUser;
	}

	import from AtsImsIot_TestConfiguration {
		const all;
		function all;
	}

	import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; }
	import from AtsImsIot_TestConfiguration { const all; function all; }
	import from LibIot_TestInterface { type IotEquipmentUser; }

	import from AtsImsIot_TestSystem {
		type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface;
	}
		
	import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; }
	import from AtsImsIot_TestSystem { type CF_INT_CALL; }
	
	import from AtsImsIot_Templates all;

    import from AtsImsIot_TypesAndValues { type NAPTRmessage, EnumResponse, EnumQuery; }
		
	/**
	 * @desc
@@ -205,6 +187,8 @@ module AtsImsIot_TestCases_MESS {
		 */
	testcase TC_IMS_MESS_0004() runs on ImsTestCoordinator system IotSystemInterface {
		// create components
        var EnumQuery		v_enumQuery;
        var EnumResponse	v_enumResponse;
		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);
@@ -213,6 +197,7 @@ module AtsImsIot_TestCases_MESS {
        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_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB};
		v_config.naptr	:= f_cf_create_monitor ( c_naptr );
		
		// map/connect component ports
		f_cf_adapter_up();
@@ -228,12 +213,14 @@ module AtsImsIot_TestCases_MESS {
		f_mtc_userSendMessage(v_ueA, "test"); 
		
		f_mtc_check_TP_IMS_5097_08_gm(v_gmA, false); 
        v_enumQuery		:= f_mtc_check_TP_IMS_ENUM_01_enumQuery	( v_config.naptr );		// ENUM query
		//TODO check ENUM query message as described in the spec.
        v_enumResponse	:= f_mtc_check_TP_IMS_ENUM_01_enumResponse	( v_config.naptr );	// ENUM response
		//TODO check ENUM response message as described in the spec.
        f_mtc_check_message_mx(v_mxA);
		f_mtc_check_TP_IMS_5097_08_ic(v_ic, false);
        f_mtc_check_message_mx(v_mxB);
		
		// TODO add DNS checks
		
		f_mtc_userCheckMessageReceipt(v_ueB);
		
		f_mtc_check_TP_IMS_5117_06_gm(v_gmB, false);
@@ -252,8 +239,6 @@ module AtsImsIot_TestCases_MESS {
		f_cf_adapter_down();
	}	
	
	
	
	/**
		 * @desc
		 *     IMS network handles messaging while roaming correctly.
Loading