Commit ca5f5609 authored by bergengruen's avatar bergengruen
Browse files

First draft of test case TD_IMS_0002

and minor corrections
parent 60d41949
Loading
Loading
Loading
Loading
+127 −9
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ module AtsImsIot_Behavior {
			mw_SUBSCRIBE_Request_Base,
			mw_Response_Base;
	}
	import from AtsImsIot_Functions all;
	import from Interface_configuration {modulepar PX_EUT_A, PX_EUT_B;}
	
	//TODO move group to Function module
	group general_td_functions {
@@ -54,12 +56,12 @@ module AtsImsIot_Behavior {
          in boolean p_forwardMtc
        ) runs on InterfaceMonitor { 

            var integer v_size := sizeof(valueof(p_failCriteria));
            var integer v_size := sizeof(p_failCriteria); 
            var DefaultList v_defaultArray;

            v_defaultArray[0] := activate(a_default(p_tpId));
            f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_log, p_forwardMtc);
            f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_log, p_forwardMtc);
            f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_log, true);
            f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_log, true );

			f_gen_receive(p_tpId,  p_log, p_skipCount);

@@ -118,7 +120,7 @@ module AtsImsIot_Behavior {
			in charstring p_log,
			in boolean p_forwardMtc
		) runs on InterfaceMonitor {
			var integer v_size := sizeof(valueof(p_list));
			var integer v_size := sizeof(p_list); 
			var integer v_idx := p_startIdx;

			for (var integer i := 0; i < v_size; i := i + 1) {
@@ -270,11 +272,12 @@ module AtsImsIot_Behavior {
		 */
	    function f_mtc_check_TP_IMS_5011_01_mw(
	    	InterfaceMonitor p_monitorCompRef
	    ) runs on TestCoordinator {
		   	    		
	    ) runs on TestCoordinator return Request {
		   var Request v_Register;
		   var charstring v_EUT_A_Addr := f_GetEUTAddress(PX_EUT_A);    		
           p_monitorCompRef.start(
            f_imsIot_receive(
                {mw_SipRequest(mdw_TP_IMS_5011_01_mw)},
                {mw_SipRequest(mdw_TP_IMS_5011_01_mw(v_EUT_A_Addr))},
                {mw_SipRequest(mw_REGISTER_Request_Base)},
                "TP_IMS_5011_01",
                "REGISTER request",
@@ -282,10 +285,124 @@ module AtsImsIot_Behavior {
                false
            )
           );
           // TODO assignment to v_Register of received message
           p_monitorCompRef.done;
           return v_Register;
	    }

	    /**
		 * @desc Starts monitor component behavior for TP_IMS_5011_02
		 * @param p_monitorCompRef Reference to monitor component
		 */
	    function f_mtc_check_TP_IMS_5011_02_mw(
	    	InterfaceMonitor p_monitorCompRef
	    ) runs on TestCoordinator return Request{
		   var Request v_Register;
		   var charstring v_EUT_A_Addr := f_GetEUTAddress(PX_EUT_A);    		
           p_monitorCompRef.start(
            f_imsIot_receive(
                {mw_SipRequest(mdw_TP_IMS_5011_02_mw(v_EUT_A_Addr))},
                {mw_SipRequest(mw_REGISTER_Request_Base)},
                "TP_IMS_5011_02",
                "REGISTER request",
                0,
                false
            )
           );
           p_monitorCompRef.done;
           // TODO assignment to v_Register of received message
           p_monitorCompRef.done;
           return v_Register;
	    }

	    /**
		 * @desc Starts monitor component behavior for TP_IMS_5011_02
		 * @param p_monitorCompRef Reference to monitor component
		 */
	    function f_mtc_check_TP_IMS_5092_01_mw(
	    	InterfaceMonitor p_monitorCompRef
	    ) runs on TestCoordinator return Response {
	       var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTAddress(PX_EUT_B)); 
		   var Response v_200OK;
          p_monitorCompRef.start(
            f_imsIot_receive(
                {mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_eutBUri))},
                {mw_SipResponse (mw_200OK_Base)},
                "TP_IMS_5092_01",
                "REGISTER request",
                0,
                false
            )
           );
           p_monitorCompRef.done;
           // TODO assignment to v_200OK of received message
           p_monitorCompRef.done;
           return v_200OK;
	    }


	    /**
		 * @desc Starts monitor component behavior for TP_IMS_5089_01
		 * @param p_monitorCompRef Reference to monitor component
		 */
	    function f_mtc_check_TP_IMS_5089_01_mw(
	    	InterfaceMonitor p_monitorCompRef
	    ) runs on TestCoordinator return Response {
		   var Response v_401Unauthorized;
          p_monitorCompRef.start(
            f_imsIot_receive(
                {mw_SipResponse(mdw_TP_IMS_5089_01_mw)},
                {mw_SipResponse (mw_401Unauthorized_Base)},
                "TP_IMS_5089_01",
                "REGISTER request",
                0,
                false
            )
           );
           p_monitorCompRef.done;
           // TODO assignment to v_401Unauthorized of received message
           p_monitorCompRef.done;
           return v_401Unauthorized;
	    }


	    /**
		 * @desc Starts monitor component behavior for TP_IMS_5011_02
		 * @param p_monitorCompRef Reference to monitor component
		 */
	    function f_mtc_check_TP_IMS_5044_01_mw(
	    	InterfaceMonitor p_monitorCompRef, Response p_200OK
	    ) runs on TestCoordinator  return Request
	    {
	       var charstring v_EUTB_PublicId := f_GetEUTPublicId(PX_EUT_B);
		   var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTAddress(PX_EUT_A));  		
		   var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTAddress(PX_EUT_B)); 
		   var Request v_Subscribe; 		
           p_monitorCompRef.start(
            f_imsIot_receive(
                {mw_SipRequest(mdw_TP_IMS_5044_01_mw(v_eutAUri, v_eutBUri, v_EUTB_PublicId))},
                {mw_SipRequest(mw_SUBSCRIBE_Request_Base)},
                "TP_IMS_5044_01",
                "REGISTER request",
                0,
                false
            )
           );
           // TODO assignement of the recived message to v_Subscribe

           // Check that the expires header is set to "a value greater than the one 
           // in the Expires_header of the 200_response"
           var charstring v_Epires200OK := p_200OK.msgHeader.expires.deltaSec;
           var charstring v_EpiresSubscribe  := v_Subscribe.msgHeader.expires.deltaSec;
           if (char2int(v_EpiresSubscribe) <= char2int(v_Epires200OK)) {
             setverdict(fail);
           }
           
           p_monitorCompRef.done;
           return v_Subscribe;
	    }


	/**
	* @desc Starts monitor component behavior for TP_IMS_5088_01 (gm)
	* @param p_monitorCompRef Reference to monitor component
@@ -317,7 +434,7 @@ module AtsImsIot_Behavior {
    		
    	p_monitorCompRef.start(
			f_imsIot_receive(
						{mw_SipRequest(mdw_TP_IMS_5088_01_mw(v_callId, mw_SIP_URI("hostname")))}, // TODO getHostname(PCSCF) how to hande the callid?
						{mw_SipRequest(mdw_TP_IMS_5088_01_mw(v_callId, mw_SipUrl_Host("hostname")))}, // TODO getHostname(PCSCF) how to hande the callid?
						{mw_SipRequest(mw_MESSAGE_Request_Base(?))},
						"TP_IMS_5088_01_mw",
						"200_OK response",
@@ -327,5 +444,6 @@ module AtsImsIot_Behavior {
    	);
    	p_monitorCompRef.done;
    	}	
}	
 	
}// end module
 No newline at end of file
+11 −2
Original line number Diff line number Diff line
@@ -201,6 +201,15 @@ module AtsImsIot_Functions {
     		return v_status;
     	}

     	function f_GetEUTAddress(integer p_ProductIdx) return charstring {
     	  // TODO
     	  return "TODO";
     	}
     	function f_GetEUTPublicId(integer p_ProductIdx) return charstring {
     	  // TODO
     	  return "TODO";
     	}

 	}
 
 
@@ -212,7 +221,7 @@ module AtsImsIot_Functions {
		  * @param p_monitor Reference of Interface Monitor component
		  * @param p_msg The Sip message
		  */
	 	function f_getSipMsgFromMonitor(InterfaceMonitor p_monitor, out template SipMessage p_msg) runs on TestCoordinator {
	 	function f_getSipMsgFromMonitor(InterfaceMonitor p_monitor, out SipMessage p_msg) runs on TestCoordinator {
            timer t_local := PX_MAX_MSG_WAIT;
            t_local.start;            
            alt {
+208 −35
Original line number Diff line number Diff line
@@ -55,10 +55,9 @@ module AtsImsIot_Templates {
		 * 
		 * @desc REGISTER Request containing secuity client header.
		 */
		template REGISTER_Request mdw_TP_IMS_5011_01_gm modifies mw_REGISTER_Request_Base := {
			msgHeader := {
				securityClient := ?
			}
//    template REGISTER_Request mdw_TP_IMS_5011_01_gm modifies mw_REGISTER_Request_Base := {
    template Request mdw_TP_IMS_5011_01_gm modifies mw_REGISTER_Request_Base := {
      msgHeader := ?
    }
    
    
@@ -66,18 +65,112 @@ module AtsImsIot_Templates {
     * 
     * @desc REGISTER Request checking TP_IMS_5011_01.
     */
		template REGISTER_Request mdw_TP_IMS_5011_01_mw modifies mw_REGISTER_Request_Base := {
    // template REGISTER_Request mdw_TP_IMS_5011_01_mw ( charstring p_EUTHostname ) modifies mw_REGISTER_Request_Base := {
    template Request mdw_TP_IMS_5011_01_mw ( charstring p_EUTHostname ) modifies mw_REGISTER_Request_Base := {
      msgHeader := {
				path := ?, // TODO check contant
				require := ?, // TODO check contant
				pChargingVector := ?, // TODO check contant
				authorization := ?, // TODO check contant
        path := h_PathDef (p_EUTHostname),
        require :=  h_Require ({"path", *}), 
        pChargingVector :=  h_PChargingVector({
            {id := "icid", paramValue := *}, 
            {id := "orig", paramValue := *}, 
            {id := "term", paramValue := *}, 
            *
          }),
        authorization := m_Authorization(ie_credentialIntegrityNo), 
        securityClient := omit,
        securityVerify :=omit,
				pVisitedNetworkID := ?
        pVisitedNetworkID := h_PVisitedNetworkIDAny
      }
    }

    /**
     * 
     * @desc REGISTER Request checking TP_IMS_5011_02.
     */
    // template REGISTER_Request mdw_TP_IMS_5011_02_mw ( charstring p_EUTHostname  ) modifies mw_REGISTER_Request_Base := {
    template Request mdw_TP_IMS_5011_02_mw ( charstring p_EUTHostname  ) modifies mw_REGISTER_Request_Base := {
      msgHeader := {
        path := h_PathDef (p_EUTHostname),
        require :=  h_Require ({"path", *}), 
        pChargingVector :=  h_PChargingVector({
            {id := "icid", paramValue := *}, 
            {id := "orig-ioi", paramValue := *}, 
            {id := "term-ioi", paramValue := *}, 
            *
          }),
        authorization := m_Authorization(ie_credentialIntegrityYes), 
        securityClient := omit,
        securityVerify :=omit,
        pVisitedNetworkID := h_PVisitedNetworkIDAny
      }
    }

    /**
     * 
     * @desc 200 OK  message checking f_mtc_check_TP_IMS_5092_01_mw.
     */
    template Response mdw_TP_IMS_5092_01_mw (template SipUrl p_eutBUri )modifies mw_200OK_Base := {
      msgHeader := {
        pAssociatedURI := m_PAssociatedURI,
        serviceRoute := h_ServiceRoute (p_eutBUri)
      }
    }
   /**
     * 
     * @desc 401 Unauthorized   message checking f_mtc_check_TP_IMS_5089_01_mw.
     */
    template Response mdw_TP_IMS_5089_01_mw modifies mw_401Unauthorized_Base := {
      msgHeader := {
        wwwAuthenticate := h_WwwAuthenticate
      }
    }


   /**
     * 
     * @desc SUBSCRIBE checking TP_IMS_5044_01.
     */
    // template SUBSCRIBE_Request mdw_TP_IMS_5044_01_mw(template SipUrl p_eutAUri, template SipUrl p_eutBUri)  
    template Request mdw_TP_IMS_5044_01_mw(template SipUrl p_eutAUri, 
                                     template SipUrl p_eutBUri,
                                     template charstring p_EUTB_PublicId
                                     )  
    modifies mw_SUBSCRIBE_Request_Base := {
      
      requestLine := {
        method := SUBSCRIBE_E,
        requestUri := p_eutBUri,
        sipVersion := c_sipNameVersion
      },
      msgHeader := {
        fromField := mw_From (p_eutAUri),
        toField := mw_To_NameAddr_SipUrl (p_EUTB_PublicId, ?, ?),
        event := m_Event_reg,
        expires := ?, // to be checked outside the template
        pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_eutAUri)),
        pChargingVector :=  h_PChargingVector({
            {id := "icid", paramValue := *}, 
            *
          })
      }
    }

  template Response mw_200OK_Base  modifies m_Response_Dummy :=
		{
		statusLine := c_statusLine200,
		msgHeader := ?,
		messageBody := omit,
		payload	:= omit
		}
  template Response mw_401Unauthorized_Base  modifies m_Response_Dummy :=
		{
		statusLine := c_statusLine401,
		msgHeader := ?,
		messageBody := omit,
		payload	:= omit
		}


		template REGISTER_Request mdw_TP_IMS_5088_01_gm  modifies mw_REGISTER_Request_Base := {
			msgHeader := {
				authorization := {
@@ -98,19 +191,99 @@ module AtsImsIot_Templates {
        	messageBody := ? // TODO 
        }

	}//end group

	group config {

		template SipUrl mw_SIP_URI (charstring p_host):= {
  }//end group
group HeaderTemplates {

  template Path h_PathDef (charstring p_Host) := {
  fieldName := PATH_E,
  pathValues := {{
    nameAddr:= {
      displayName := *,
      addrSpec := { 
        scheme := "sip",
			userInfo := *,
        userInfo := omit,
        hostPort := {   
				host := p_host, 
				portField := *
			},
          host := p_Host,
          portField := *},
          urlParameters := *,
			headers := *
          headers := omit}
      },
      rrParam := omit
  }}
  } // template
  
  template Require h_Require (template OptionTag_List p_optionsList) := {
    fieldName := REQUIRE_E,
    optionsTags := p_optionsList
  } // template

  template PChargingVector h_PChargingVector (template SemicolonParam_List p_List) := {
    fieldName := P_CHARGING_VECTOR_E,
    chargeParams := p_List
  } // template

  template ServiceRoute h_ServiceRoute (template SipUrl p_eutAddr) := {
    fieldName := SERVICE_ROUTE_E,
    routeBody := {
      {
        nameAddr := {
          displayName := *,
          addrSpec := p_eutAddr
        },
        rrParam := *
      }, 
      *
    }
  } // template



  template PVisitedNetworkID h_PVisitedNetworkIDAny  := {
    fieldName := P_VISITED_NETWORK_E,
    vNetWorkSpec := ?
  } // template

  template PAssociatedURI m_PAssociatedURI :=  
    {
    fieldName := P_ASSOCIATED_URI_E,
    nameAddrList:= {
       {nameAddr := *,
         // TODO TP_IMS_5092_01 in CFW step 8 (200 Ok):
         //   containing all registered public identities and its associated 
         //   set of implicitly registered public user identities.
        genericParams := {{id := "xx",paramValue := "yy"}}  
       },
       *
       }
    }	  
  template WwwAuthenticate h_WwwAuthenticate  := {
    fieldName := WWW_AUTHENTICATE_E,
    challenge := {
      digestCln := { {id := "username", paramValue := ?},
 									  {id := "realm", paramValue := ?}, // TODO containing operator ID
 									  {id := "nonce", paramValue := ?},
 									  {id := "rand", paramValue := ?},
 									  {id := "autn", paramValue := ?},
 									  {id := "ik", paramValue := ?},
 									  {id := "ck", paramValue := ?},
 									  {id := "algorithm", paramValue := "AKAv1-MD5"}, 
 									  *}
      
    }
  } // template
  
  
} // end group HeaderTemplates

group AuxiliaryInformationElementTemplates {
  
  template Credentials ie_credentialIntegrityYes := {
    otherResponse := {authScheme := "IntegrityYes", authParams := *} // TODO
  }
  template Credentials ie_credentialIntegrityNo := {
    otherResponse := {authScheme := "IntegrityNo", authParams := *} // TODO
  }
  
} //end group
+13 −1
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ module AtsImsIot_TestCases {
	import from AtsImsIot_Functions {function all;}
	
	import from AtsImsIot_Behavior all;
	import from LibSip_SIPTypesAndValues all;
	
	import from LibIot_TypesAndValues {const all;}
	
@@ -95,6 +96,12 @@ module AtsImsIot_TestCases {
		var EutTrigger v_ueB := f_cf_create_trigger(c_trigger_B);
		var InterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A);
		var InterfaceMonitor v_mw := f_cf_create_monitor(c_mw);
		var Request v_Register_Step3;
		var Response v_401Unauthorited_Step4;
		var Request v_Register_Step7;
		var Response v_200OK_Step8;
		var Request v_Subscribe_Step10;
		var Response v_200OK_Step11;
		
		// map/connect component ports
		f_cf_trigger_up(v_ueB);
@@ -105,7 +112,12 @@ module AtsImsIot_TestCases {
		f_mtc_userTriggerRegistration(v_ueB, PX_EUT_B); 
		
		f_mtc_check_TP_IMS_5011_01_gm(v_gmA);
		f_mtc_check_TP_IMS_5011_01_mw(v_mw);
		
		v_Register_Step3 := f_mtc_check_TP_IMS_5011_01_mw(v_mw); 
		v_401Unauthorited_Step4 := f_mtc_check_TP_IMS_5089_01_mw(v_mw);
		v_Register_Step7 := f_mtc_check_TP_IMS_5011_02_mw(v_mw); 
		v_200OK_Step8 := f_mtc_check_TP_IMS_5092_01_mw(v_mw)
		v_Subscribe_Step10 := f_mtc_check_TP_IMS_5044_01_mw(v_mw, v_200OK_Step8); 
		
		f_mtc_userCheckRegistration(v_ueB, PX_EUT_B);
		
+4 −2
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@ module LibIot_TestInterface {
	import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;}

	import from LibCommon_Sync all;
	import from LibSip_SIPTypesAndValues all; 
	import from AtsImsIot_TypesAndValues all;
	
	
	/**
@@ -88,11 +90,11 @@ module LibIot_TestInterface {
		}
		
		type port MsgExchangePort message {
			inout all;	
			inout SipMessage;	
		}
		
		type port MonitorPort message {
			in all;
			in  Request, Response; 
		}

		type port EutConfigPort procedure {