Commit a3bf273f authored by ringst's avatar ringst
Browse files

- f_GetEUTPcscfAddress implemented (not tested)

- f_GetEUTScscfAddress implemented (not tested)
- TC_IMS_REG_0001() updated (still incomplete)
parent 6851e359
Loading
Loading
Loading
Loading
+137 −31
Original line number Diff line number Diff line
@@ -299,6 +299,7 @@ group checksTC_IMS_MESS_0001{
group checksTC_IMS_REG_0001 {	    
	    /**
		 * @desc Starts monitor component behavior for TP_IMS_5011_01 
		 * 		 the on Gm-interface
		 * @param p_monitorCompRef Reference to monitor component
		 */
	    function f_mtc_check_TP_IMS_5011_01_gm(
@@ -320,10 +321,11 @@ group checksTC_IMS_REG_0001 {
	    
	    /**
		 * @desc Starts monitor component behavior for TP_IMS_5011_01
		 * 		 on the Mw-interface
		 * @param p_monitorCompRef Reference to monitor component
		 */
	    function f_mtc_check_TP_IMS_5011_01_mw(
	    	ImsInterfaceMonitor p_monitorCompRef
	    	ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
	    ) runs on ImsTestCoordinator return Request {
		   var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A);
		   var SipMessage v_sip;    		
@@ -333,7 +335,7 @@ group checksTC_IMS_REG_0001 {
                {mw_SipRequest(mw_REGISTER_Request_Base)},
                {0, omit},
                "TP_IMS_5011_01",
                true,
				p_checkMessage,
                false
            )
           );
@@ -343,7 +345,50 @@ group checksTC_IMS_REG_0001 {
	    }

		/**
		 * @desc Starts monitor component behavior for TP_IMS_5011_02
        * @desc Starts monitor component behavior for TP_IMS_5089_01 (gm)
        * @param p_monitorCompRef Reference to monitor component
        */		
    	function f_mtc_check_TP_IMS_5089_01_gm_when (
        	ImsInterfaceMonitor p_monitorCompRef
        ) runs on ImsTestCoordinator {
			p_monitorCompRef.start(
				f_imsIot_receive(
					{mw_SipRequest(mw_REGISTER_Request_Base)},
					{},
					{0, omit},
					"TP_IMS_5089_01_gm_when",
					false,
					false
				)
			);
			p_monitorCompRef.done;
        }


		/**
        * @desc Starts monitor component behavior for TP_IMS_5011_02 (gm) 
        * 		 the on Gm-interface
        * @param p_monitorCompRef Reference to monitor component
        */
		function f_mtc_check_TP_IMS_5011_02_gm(
			ImsInterfaceMonitor p_monitorCompRef
		) runs on ImsTestCoordinator {
		   
    		p_monitorCompRef.start(
    			f_imsIot_receive(
					{mw_SipRequest(mdw_TP_IMS_5011_02_gm)},
					{mw_SipRequest(mw_REGISTER_Request_Base)},
					{0, omit},
					"TP_IMS_5011_02_gm",
					false,
					false
    			)
    		);
    		p_monitorCompRef.done;
		}

	    /**
		 * @desc Starts monitor component behavior for TP_IMS_5011_02 (mw)
		 * @param p_monitorCompRef Reference to monitor component
		 */
	    function f_mtc_check_TP_IMS_5011_02_mw(
@@ -367,37 +412,32 @@ group checksTC_IMS_REG_0001 {
           return v_sip.request;
	    }


    	/**
		 * @desc Starts monitor component behavior for TP_IMS_5092_01
        * @desc Starts monitor component behavior for TP_IMS_5089_01 (when)
        * @param p_monitorCompRef Reference to monitor component
        */
	    function f_mtc_check_TP_IMS_5092_01_mw(
    	function f_mtc_check_TP_IMS_5089_01_mw_when(
    		ImsInterfaceMonitor p_monitorCompRef
	    ) runs on ImsTestCoordinator return Response {
	       var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); 
		   var SipMessage v_sip;
    	) runs on ImsTestCoordinator {
			p_monitorCompRef.start(
				f_imsIot_receive(
                {mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_eutBUri))},
                {mw_SipResponse (mw_200OK_Base)},
					{mw_SipRequest(mdw_TP_IMS_5089_01_mw_when)},
					{mw_SipRequest(mw_REGISTER_Request_Base)},
					{0, omit},
                "TP_IMS_5092_01",
					"TP_IMS_5089_01 (when)",
					true,
					false
				)
			);
    		p_monitorCompRef.done;

           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
           return v_sip.response;
    	}


	    /**
		 * @desc Starts monitor component behavior for TP_IMS_5089_01
		 * @desc Starts monitor component behavior for TP_IMS_5089_01 (then)
		 * @param p_monitorCompRef Reference to monitor component
		 */
	    function f_mtc_check_TP_IMS_5089_01_mw(
	    function f_mtc_check_TP_IMS_5089_01_mw_then(
	    	ImsInterfaceMonitor p_monitorCompRef
	    ) runs on ImsTestCoordinator return Response {
		  var SipMessage v_sip;
@@ -418,6 +458,72 @@ group checksTC_IMS_REG_0001 {
	    }


		/**
    	* @desc Starts monitor component behavior for TP_IMS_5092_01 (gm) 
    	* 		 the on Gm-interface
    	* @param p_monitorCompRef Reference to monitor component
    	*/
    	function f_mtc_check_TP_IMS_5092_01_gm(
    		ImsInterfaceMonitor p_monitorCompRef
    	) runs on ImsTestCoordinator {
    		p_monitorCompRef.start(
			f_imsIot_receive(
        		{mw_SipRequest(mdw_TP_IMS_5011_02_gm)},
        		{mw_SipRequest(mw_REGISTER_Request_Base)},
        		{0, omit},
        		"TP_IMS_5092_01_gm",
        		false,
        		false
    			)
    		);
   			p_monitorCompRef.done;
    	}

		/**
		* @desc Starts monitor component behavior for TP_IMS_5092_01 (when)
		* @param p_monitorCompRef Reference to monitor component
		*/
        function f_mtc_check_TP_IMS_5092_01_mw_when(
        	ImsInterfaceMonitor p_monitorCompRef
        ) runs on ImsTestCoordinator {
        	p_monitorCompRef.start(
        	f_imsIot_receive(
        		{mw_SipRequest(mdw_TP_IMS_5092_01_mw_when)},
        		{mw_SipRequest(mw_REGISTER_Request_Base)},
        		{0, omit},
        		"TP_IMS_5092_01 (when)",
        		true,
        		false
        		)
        	);
			p_monitorCompRef.done;
		}

		/**
        * @desc Starts monitor component behavior for TP_IMS_5092_01
        * @param p_monitorCompRef Reference to monitor component
        */
		function f_mtc_check_TP_IMS_5092_01_mw(
			ImsInterfaceMonitor p_monitorCompRef
		) runs on ImsTestCoordinator return Response {
			var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); 
    		var SipMessage v_sip;
    		p_monitorCompRef.start(
    				f_imsIot_receive(
            			{mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_eutBUri))},
            			{mw_SipResponse (mw_200OK_Base)},
            			{0, omit},
            			"TP_IMS_5092_01",
            			true,
            			false
    			)
    		);
    		p_monitorCompRef.done;
    
    		f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
    		return v_sip.response;
		}
		
	    /**
		 * @desc Starts monitor component behavior for TP_IMS_5011_02
		 * @param p_monitorCompRef Reference to monitor component
+54 −6
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ module AtsImsIot_Functions {
 
 	import from AtsImsIot_TestSystem {type ImsTestCoordinator;}

 	import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;}
 	import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS;}

 	import from AtsImsIot_TypesAndValues {type SipMessage;}

@@ -400,16 +400,64 @@ module AtsImsIot_Functions {
    	 * @desc Get the S-CSCF FQDN address of referenced EUT 
    	 */
       function f_GetEUTScscfAddress(integer p_ProductIdx) return charstring {
         // TODO
         return "TODO";
			// TODO function not tested
			var integer v_size_interfaces := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces);
			var integer v_size_ipinterfaceinfo;
			var integer v_interface := -1;
			var integer v_ipinterfaceinfo := -1;
			var charstring v_domainname;
  
			for(var integer i := 0; i < v_size_interfaces; i := i+1) {
				if (PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName == "Mw"){
					v_interface := i;
				}
			}
			v_size_ipinterfaceinfo := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo);
			for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) {
				v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName;
				if (substr(v_domainname, 0, 5) == pattern "[Ss][Cc][Ss][Cc][Ff]") {
					v_ipinterfaceinfo := i;
				}
			}
			if (v_interface > -1 and v_ipinterfaceinfo > -1) {
				return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName;
			} else {
				return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found.";
			}
        }
        
    	/**
    	 * @desc Get the P-CSCF FQDN address of referenced EUT 
    	 * @return if a PCSCF is avaiable, the domainname of the PCSCF, 
    	 *         otherwise error_string
    	 */
     	function f_GetEUTPcscfAddress(integer p_ProductIdx) return charstring {
     	  // TODO
     	  return "TODO";
     	  // TODO function not tested
		  var integer v_size_interfaces := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces);
		  var integer v_size_ipinterfaceinfo;
		  var integer v_interface := -1;
		  var integer v_ipinterfaceinfo := -1;
		  var charstring v_domainname;
		  
		  for(var integer i := 0; i < v_size_interfaces; i := i+1) {
		  	if (PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName == "Gm"){
			  v_interface := i;
		  	}
		  }
		  v_size_ipinterfaceinfo := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo);
		  for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) {
			v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName;
		  	if (substr(v_domainname, 0, 5) == pattern "[Pp][Cc][Ss][Cc][Ff]") {
			  v_ipinterfaceinfo := i;
 	        }
		  }
		  if (v_interface > -1 and v_ipinterfaceinfo > -1) {
     	  	return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName;
		  } else {
			return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found.";
		  }
     	}

    	/**
    	 * @desc Get the Public Id of referenced EUT 
    	 */
+28 −0
Original line number Diff line number Diff line
@@ -73,6 +73,15 @@ module AtsImsIot_Templates {
      }
    }
    
		/**
		* 
		* @desc REGISTER Request containing secuity client header.
		*/
		template REGISTER_Request mdw_TP_IMS_5011_02_gm modifies mw_REGISTER_Request_Base := {
			msgHeader := {
				securityClient := ?
			}
		}
    
    /**
     * 
@@ -125,6 +134,25 @@ module AtsImsIot_Templates {
        pVisitedNetworkID := mw_PVisitedNetworkIDAny
      }
    }
	/**
	* 
	* @desc REGISTER Request checking TP_IMS_5089_01.
	*/
	template REGISTER_Request mdw_TP_IMS_5089_01_mw_when modifies mw_REGISTER_Request_Base := {
		msgHeader := {
			authorization := m_Authorization(mw_credentialIntegrityNo) 
		}
	}

	/**
	* 
	* @desc REGISTER Request checking TP_IMS_5092_01.
	*/
	template REGISTER_Request mdw_TP_IMS_5092_01_mw_when modifies mw_REGISTER_Request_Base := {
		msgHeader := {
			authorization := m_Authorization(mw_credentialIntegrityNo) 
		}
	}

    /**
     * 
+35 −11
Original line number Diff line number Diff line
@@ -59,18 +59,33 @@ module AtsImsIot_TestCases_REG {
		f_cf_monitor_up(v_mw);
		
		// test body
		f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); 
		f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // Step1
		
		f_mtc_check_TP_IMS_5011_01_gm(v_gmA); // Check1 when
		v_Register_Step3 := f_mtc_check_TP_IMS_5011_01_mw(v_mw); // Check1 then & Check4 when
		v_Register_Step3 := f_mtc_check_TP_IMS_5011_01_mw(v_mw, true); // Check1 then @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityNo)
		
		f_mtc_check_TP_IMS_5089_01_gm_when(v_gmA); // Check4 when (Gm)
		f_mtc_check_TP_IMS_5089_01_mw_when(v_mw); // Check4 when (Mw) @TODO fields need to be checked (mw_credentialIntegrityNo)
		v_401Unauthorited_Step4 := f_mtc_check_TP_IMS_5089_01_mw_then(v_mw); // Check4 then @TODO fields in mw_WwwAuthenticate
		
		f_mtc_check_TP_IMS_5011_02_gm(v_gmA); // Check2 when (Gm)
		v_Register_Step7 := f_mtc_check_TP_IMS_5011_02_mw(v_mw);  // Check2 then (Mw) @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityYes)
		
		v_401Unauthorited_Step4 := f_mtc_check_TP_IMS_5089_01_mw(v_mw); // Check4 then 
		// missing GmA Prot REG 
		v_Register_Step7 := f_mtc_check_TP_IMS_5011_02_mw(v_mw);  // Check2 then & Check 5 when
		v_200OK_Step8 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check5 then & Check3 when
		f_mtc_check_TP_IMS_5092_01_gm(v_gmA); // Check5 when (Gm)
		f_mtc_check_TP_IMS_5092_01_mw_when(v_mw); // Check5 when (Mw) @TODO fields need to be checked (mw_credentialIntegrityNo)		
		v_200OK_Step8 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check5 then @TODO template does not contain valid content
		// TODO incomplete
		// Check3 when
		
		// Check3 then
		v_Subscribe_Step10 := f_mtc_check_TP_IMS_5044_01_mw(v_mw, v_200OK_Step8); // Check3 then
		
		// Check6 when 
		
		// Check6 then
		f_mtc_check_TP_IMS_5096_01_mw(v_mw, v_Subscribe_Step10); // Check6
		
		// Step2
		f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B));
		
		// postamble
@@ -91,7 +106,7 @@ module AtsImsIot_TestCases_REG {
		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_mw := f_cf_create_monitor(c_mw);
		var Request v_Register_Step4;
		var Request v_Register_Step4; // why do we need this variable?
		var Response v_200OK_Step9;
		
		// map/connect component ports
@@ -100,13 +115,22 @@ module AtsImsIot_TestCases_REG {
		f_cf_monitor_up(v_mw);
		
		// test body
		f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_A)); 
		f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_A)); // Step1
		
		// check no response (check1-when) -message skip (1st register) 
		// check included in check1-then

		// check mw for second register request 
		f_mtc_check_TP_IMS_5203_01_mw(v_mw); // (Check1-then)
		
		// check gm for protected register (Check2-when)
				
		f_mtc_check_TP_IMS_5203_01_gm(v_gmA);
		// check mw for protected register (check2-when)
		
		v_Register_Step4 := f_mtc_check_TP_IMS_5203_01_mw(v_mw); // Check1 (not really tested)
		// check mw for 200_response (check2-then) 
		v_200OK_Step9 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check2
		
		//Step 2
		f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); 
		
		// postamble