From b552eb51b6d3808db621bef1a8d5652e743d903e Mon Sep 17 00:00:00 2001
From: Miguel Angel Reina Ortega <miguelangel.reinaortega@etsi.org>
Date: Wed, 6 Dec 2017 06:56:39 +0100
Subject: [PATCH] f_ae_createResource renamed to f_ae_createLocalResource and
 corrections for AE resource creation + f_cf03Up, f_cf03Down updated +
 f_ae_preamble_registerAe fixed to used mcaPortIn + f_getLocalResourceAddress
 corrected + f_AE_DMR_UPD_001 updated

Signed-off-by: Miguel Angel Reina Ortega <miguelangel.reinaortega@etsi.org>
---
 LibOneM2M/OneM2M_Functions.ttcn | 65 ++++++++++++++-------------
 OneM2M_Testcases_AE.ttcn        | 79 ++++++++++++++++++++++-----------
 2 files changed, 86 insertions(+), 58 deletions(-)

diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index a6d9ab2..797a08e 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -178,15 +178,23 @@ module OneM2M_Functions {
 		function f_cf03Up() runs on CseSimu {
 		
 			// Variables
+			var PrimitiveContent v_cSEBaseResource;
 			vc_config := e_cf03;
 			vc_testSystemRole := e_cse;		
 			
 			// Map
 			map(self:mcaPortIn, system:mcaPortIn);//TODO To be consistent, we should use mcaPortIn for AE testing
 			map(self:acPort, system:acPort);
-			map(self:utPort, system:utPort);
+			if(PX_UT_IMPLEMENTED) {
+				map(self:utPort, system:utPort);
+			}
 			activate(a_default());
 			activate(a_ae_cf03());
+			
+			//Creation of CSEBase
+			
+			v_cSEBaseResource := f_cse_generateLocalResource(-, -1, int5);
+			vc_cSEBaseIndex := f_setLocalResource(v_cSEBaseResource, int5, -1);
 		
 			// Connect
 					
@@ -274,7 +282,9 @@ module OneM2M_Functions {
 		function f_cf03Down() runs on CseSimu {
 			
 			unmap(self:mcaPortIn, system:mcaPortIn);
-			unmap(self:utPort, system:utPort);
+			if(PX_UT_IMPLEMENTED){
+				unmap(self:utPort, system:utPort);
+			}
 			unmap(self:acPort, system:acPort);
 		}
 		
@@ -1918,18 +1928,18 @@ module OneM2M_Functions {
      		
 				tc_ac.start;
 				alt {    				
-					[] mcaPort.receive(mw_request(mw_createAe)) -> value v_request {
+					[] mcaPortIn.receive(mw_request(mw_createAe)) -> value v_request {
 						tc_ac.stop;
     					
 						v_rp := v_request.primitive.requestPrimitive;		
 						v_parentIndex := f_getResourceIndex(v_rp.to_);
-						v_resourceIndex := f_ae_createResource(v_rp.primitiveContent, v_parentIndex, v_rp.resourceType, v_modifiedResource);
+						v_resourceIndex := f_ae_createLocalResource(v_rp.primitiveContent, v_parentIndex, v_rp.resourceType, v_modifiedResource);
 						if(v_resourceIndex != -1) {
-							mcaPort.send(m_response(m_responsePrimitive_content(int2001, v_rp.requestIdentifier, v_modifiedResource)));
+							mcaPortIn.send(m_response(m_responsePrimitive_content(int2001, v_rp.requestIdentifier, v_modifiedResource)));
 							setverdict(pass, __SCOPE__&":INFO: Application registered successfuly");
 						}
 						else {
-							mcaPort.send(m_response(m_responsePrimitive(int5000, v_request.primitive.requestPrimitive.requestIdentifier)));
+							mcaPortIn.send(m_response(m_responsePrimitive(int5000, v_request.primitive.requestPrimitive.requestIdentifier)));
 							setverdict(inconc, __SCOPE__&":INFO: AE registration failed");
 						}					
 					}
@@ -1973,7 +1983,7 @@ module OneM2M_Functions {
     					
 						v_rp := v_request.primitive.requestPrimitive;		
 						v_parentIndex := f_getResourceIndex(v_rp.to_);
-						v_resourceIndex := f_ae_createResource(v_rp.primitiveContent, v_parentIndex, v_rp.resourceType, v_modifiedResource);
+						v_resourceIndex := f_ae_createLocalResource(v_rp.primitiveContent, v_parentIndex, v_rp.resourceType, v_modifiedResource);
 						if(v_resourceIndex != -1) {
 							mcaPort.send(m_response(m_responsePrimitive_content(int2001, v_rp.requestIdentifier, v_modifiedResource)));
 							setverdict(pass, __SCOPE__&":INFO: Container created successfuly");
@@ -2007,7 +2017,7 @@ module OneM2M_Functions {
 			 * @param  p_modifiedResource  Assigned and/or modified fields
 			 * @return Internal resource index of the saved resource or -1
 			 */
-			function f_ae_createResource(in PrimitiveContent p_resource, in integer p_parentIndex, in ResourceType p_resourceType, out PrimitiveContent p_modifiedResource) runs on CseSimu return integer {
+			function f_ae_createLocalResource(in PrimitiveContent p_resource, in integer p_parentIndex, in ResourceType p_resourceType, out PrimitiveContent p_modifiedResource) runs on CseSimu return integer {
 
 				var integer v_resourceIndex;
 				
@@ -2015,28 +2025,19 @@ module OneM2M_Functions {
 				if(p_resourceType == int2 and ispresent(p_resource)) {
 					if(ischosen(p_resource.aE)){
 						var AE_optional v_ae := p_resource.aE;
-						var AE_optional v_aeModified;					
-      					
-						v_resourceIndex := lengthof(vc_resourcesList) - 1;
+						
+						v_resourceIndex := lengthof(vc_localResourcesList) - 1;
 						v_ae.resourceType := p_resourceType;
       					
-						v_ae.parentID := int2str(p_parentIndex);
+						v_ae.parentID := PX_CSE1_ID;
 						v_ae.creationTime := fx_generateTimestamp();
 						v_ae.lastModifiedTime := v_ae.creationTime;											
-						v_ae.resourceID := "ae" & int2char(v_resourceIndex);
-						v_ae.aE_ID := "ae" & int2char(v_resourceIndex);
-						v_ae.resourceName := "ae" & int2char(v_resourceIndex);
+						v_ae.resourceID := "ae" & int2str(v_resourceIndex);
+						v_ae.aE_ID := "Cae" & int2str(v_resourceIndex);
+						v_ae.resourceName := "ae" & int2str(v_resourceIndex);
       
-						v_aeModified.parentID := v_ae.parentID;
-						v_aeModified.creationTime := v_ae.creationTime;
-						v_aeModified.lastModifiedTime := v_ae.lastModifiedTime;											
-						v_aeModified.resourceID := v_ae.resourceID;
-						v_aeModified.aE_ID := v_ae.aE_ID;
-						v_aeModified.resourceName := v_ae.resourceName;
-      					
-						p_resource.aE := v_ae;
-						p_modifiedResource.aE := v_aeModified;
-						return f_setResource(p_resource, p_resourceType, p_parentIndex, false);			   
+						p_modifiedResource.aE := v_ae;
+						return f_setLocalResource(p_resource, p_resourceType, p_parentIndex);			   
 				    
 					}
 										
@@ -2086,7 +2087,7 @@ module OneM2M_Functions {
 				[] mcaPort.receive(mw_request(mw_create)) -> value v_request {	
 					v_rp := v_request.primitive.requestPrimitive;		
 					v_parentIndex := f_getResourceIndex(v_rp.to_);
-					v_resourceIndex := f_ae_createResource(v_rp.primitiveContent, v_parentIndex, v_rp.resourceType, v_modifiedResource);
+					v_resourceIndex := f_ae_createLocalResource(v_rp.primitiveContent, v_parentIndex, v_rp.resourceType, v_modifiedResource);
 					if(v_resourceIndex != -1) {
 						mcaPort.send(m_response(m_responsePrimitive_content(int2001, v_rp.requestIdentifier, v_modifiedResource)));
 					}
@@ -2464,8 +2465,8 @@ module OneM2M_Functions {
 		 * @param p_address	Resource URI (can be structured/unstructured cseRelative/spRelative/absolute)
 		 * @return Internal resource index of the given resource or -1 in case of error
 		 */
-		function f_getResourceIndex(in XSD.AnyURI p_address) return integer {
-			return -1; //TODO
+		function f_getResourceIndex(in XSD.AnyURI p_address) runs on CseSimu return integer {
+			return vc_cSEBaseIndex; //TODO
 		}
     		
 		/**
@@ -2553,7 +2554,7 @@ module OneM2M_Functions {
 					if(p_targetResourceIndex == -1) {
 						return PX_CSE1_NAME;
 					} else {
-						v_resourceAddress := f_getResourceAddress(vc_localResourcesList[p_targetResourceIndex].parentIndex, p_addressingMethod, p_primitiveScope) & "/" & f_getResourceName(vc_localResourcesList[p_targetResourceIndex].resource);
+						v_resourceAddress := f_getLocalResourceAddress(vc_localResourcesList[p_targetResourceIndex].parentIndex, p_addressingMethod, p_primitiveScope) & "/" & f_getResourceName(vc_localResourcesList[p_targetResourceIndex].resource);
 						return v_resourceAddress;
 					}	
 				}
@@ -2570,7 +2571,7 @@ module OneM2M_Functions {
 					if(p_targetResourceIndex == -1) {
 						return PX_CSE1_ID & "/" & PX_CSE1_NAME;
 					} else {
-						v_resourceAddress := f_getResourceAddress(vc_localResourcesList[p_targetResourceIndex].parentIndex, p_addressingMethod, p_primitiveScope) & "/" & f_getResourceName(vc_localResourcesList[p_targetResourceIndex].resource);
+						v_resourceAddress := f_getLocalResourceAddress(vc_localResourcesList[p_targetResourceIndex].parentIndex, p_addressingMethod, p_primitiveScope) & "/" & f_getResourceName(vc_localResourcesList[p_targetResourceIndex].resource);
 						return v_resourceAddress;
 					}
 				}
@@ -2579,14 +2580,14 @@ module OneM2M_Functions {
 					if(p_targetResourceIndex == -1) {
 						return PX_SP1_ID & PX_CSE1_ID;
 					} else {
-						v_resourceAddress := f_getResourceAddress(-, p_addressingMethod, p_primitiveScope) & "/" & f_getResourceId(vc_localResourcesList[p_targetResourceIndex].resource);
+						v_resourceAddress := f_getLocalResourceAddress(-, p_addressingMethod, p_primitiveScope) & "/" & f_getResourceId(vc_localResourcesList[p_targetResourceIndex].resource);
 						return v_resourceAddress;
 					}
 				} else {
 					if(p_targetResourceIndex == -1) {
 						return PX_SP1_ID & PX_CSE1_ID & "/" & PX_CSE1_NAME;
 					} else {
-						v_resourceAddress := f_getResourceAddress(vc_localResourcesList[p_targetResourceIndex].parentIndex, p_addressingMethod, p_primitiveScope) & "/" & f_getResourceName(vc_localResourcesList[p_targetResourceIndex].resource);
+						v_resourceAddress := f_getLocalResourceAddress(vc_localResourcesList[p_targetResourceIndex].parentIndex, p_addressingMethod, p_primitiveScope) & "/" & f_getResourceName(vc_localResourcesList[p_targetResourceIndex].resource);
 						return v_resourceAddress;
 					}	
 				}				
diff --git a/OneM2M_Testcases_AE.ttcn b/OneM2M_Testcases_AE.ttcn
index d489c86..beb8e54 100644
--- a/OneM2M_Testcases_AE.ttcn
+++ b/OneM2M_Testcases_AE.ttcn
@@ -1306,90 +1306,120 @@ module OneM2M_Testcases_AE {
 	
 					testcase TC_AE_DMR_UPD_001_ET() runs on CseSimu system AeSystem {						
 						
+						var template RequestPrimitive v_expectedUpdateRequestAe;
 						var charstring v_action := "Please, send a valid UPDATE Request for AE updating attribute expirationTime";
 						var template UtTriggerPrimitive v_utRequest := m_updateAeBase;
 						
 						v_utRequest.primitiveContent.aE.expirationTime := "20301231T012345";
 						
-						f_AE_DMR_UPD_001(v_utRequest, v_action);
+						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
+						v_expectedUpdateRequestAe.primitiveContent.aE.expirationTime := ?;
+												
+						f_AE_DMR_UPD_001(v_utRequest, v_action, v_expectedUpdateRequestAe);
 					}
 					
 					testcase TC_AE_DMR_UPD_001_LBL() runs on CseSimu system AeSystem {						
-						
+						var template RequestPrimitive v_expectedUpdateRequestAe;
 						var template UtTriggerPrimitive v_utRequest := m_updateAeBase;
 						var charstring v_action := "Please, send a valid UPDATE Request for AE updating attribute labels";
 						
 						v_utRequest.primitiveContent.aE.labels := {"UNINITIALIZED"};
 						
-						f_AE_DMR_UPD_001(v_utRequest,v_action);
+						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
+						v_expectedUpdateRequestAe.primitiveContent.aE.labels := ?;
+					   
+						
+						f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe);
 					}
 	
 					testcase TC_AE_DMR_UPD_001_APN() runs on CseSimu system AeSystem {
 						
+						var template RequestPrimitive v_expectedUpdateRequestAe;
 						var template UtTriggerPrimitive v_utRequest := m_updateAeBase;
 						var charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute appName";
 						
 						v_utRequest.primitiveContent.aE.appName := "UNINITIALIZED";
-						
-						f_AE_DMR_UPD_001(v_utRequest,v_action);
+
+						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
+						v_expectedUpdateRequestAe.primitiveContent.aE.appName := ?;
+												
+						f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe);
 					}
 	
 					testcase TC_AE_DMR_UPD_001_POA() runs on CseSimu system AeSystem {
 						
+						var template RequestPrimitive v_expectedUpdateRequestAe;
 						var template UtTriggerPrimitive v_utRequest := m_updateAeBase;
 						var charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute pointOfAccess";
 						
 						v_utRequest.primitiveContent.aE.pointOfAccess := {"http://127.0.0.1:1400/monitor"};
-						
-						f_AE_DMR_UPD_001(v_utRequest,v_action);
+
+						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
+						v_expectedUpdateRequestAe.primitiveContent.aE.pointOfAccess := ?;
+												
+						f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe);
 					}
 	
 					testcase TC_AE_DMR_UPD_001_OR() runs on CseSimu system AeSystem {
 						
+						var template RequestPrimitive v_expectedUpdateRequestAe;
 						var template UtTriggerPrimitive v_utRequest := m_updateAeBase;
 						var charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute ontologyRef";
 						
 						v_utRequest.primitiveContent.aE.ontologyRef := "MyOntologyRef";
-						
-						f_AE_DMR_UPD_001(v_utRequest,v_action);
+
+						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
+						v_expectedUpdateRequestAe.primitiveContent.aE.ontologyRef := ?;
+												
+						f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe);
 					}
 	
 					testcase TC_AE_DMR_UPD_001_NL() runs on CseSimu system AeSystem {
 						
+						var template RequestPrimitive v_expectedUpdateRequestAe;
 						var template UtTriggerPrimitive v_utRequest := m_updateAeBase;
 						var charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute nodeLink";
 						
 						v_utRequest.primitiveContent.aE.nodeLink := "/CSE_ID/S-AE-ID-STEM";
-						
-						f_AE_DMR_UPD_001(v_utRequest,v_action);
+
+						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
+						v_expectedUpdateRequestAe.primitiveContent.aE.nodeLink := ?;
+												
+						f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe);
 					}
 	
 					testcase TC_AE_DMR_UPD_001_RR() runs on CseSimu system AeSystem {
+						var template RequestPrimitive v_expectedUpdateRequestAe;
 						var template UtTriggerPrimitive v_utRequest := m_updateAeBase;
 						var charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute requestReachability";
 						
 						v_utRequest.primitiveContent.aE.requestReachability := true;
-						
-						f_AE_DMR_UPD_001(v_utRequest,v_action);
+
+						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
+						v_expectedUpdateRequestAe.primitiveContent.aE.requestReachability := ?;
+												
+						f_AE_DMR_UPD_001(v_utRequest,v_action, v_expectedUpdateRequestAe);
 					}
 	
 					testcase TC_AE_DMR_UPD_001_CSZ() runs on CseSimu system AeSystem {
+						var template RequestPrimitive v_expectedUpdateRequestAe;
 						var template UtTriggerPrimitive v_utRequestTestBody := m_updateAeBase;
 						var charstring v_action :=  __SCOPE__ & ": Please, send a valid UPDATE Request for AE updating attribute contentSerialization";
 						
 						v_utRequestTestBody.primitiveContent.aE.contentSerialization := {applicationxml};
-						
-						f_AE_DMR_UPD_001(v_utRequestTestBody,v_action);
+
+						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
+						v_expectedUpdateRequestAe.primitiveContent.aE.contentSerialization := ?;
+												
+						f_AE_DMR_UPD_001(v_utRequestTestBody,v_action, v_expectedUpdateRequestAe);
 					}
 	
-				   function f_AE_DMR_UPD_001(template UtTriggerPrimitive p_utRequestTestBody, in charstring p_action) runs on CseSimu {
+				   function f_AE_DMR_UPD_001(template UtTriggerPrimitive p_utRequestTestBody, in charstring p_action, template RequestPrimitive p_expectedUpdateRequest) runs on CseSimu {
 	
 						//primitives for mcaPortIn
 					   	var MsgIn v_request;
 						var ResponsePrimitive v_responsePrimitive;
-					   	var integer v_aeIndex := -1;
-						var template RequestPrimitive v_expectedUpdateRequestAe := mw_updateAe();
-						
+					   	var integer v_aeIndex := -1;						
 	
 					   	f_cf03Up();
 					   
@@ -1397,20 +1427,17 @@ module OneM2M_Testcases_AE {
 					   	v_aeIndex := f_ae_preamble_registerAe();
 	
 					   	//Send Trigger Message
-						p_utRequestTestBody.to_ := f_getResourceAddress(v_aeIndex);
+						p_utRequestTestBody.to_ := f_getLocalResourceAddress(v_aeIndex);
 					   	f_sendUtPrimitive(p_utRequestTestBody,p_action);
 	
 					   //Test behavior
 					   
-						v_expectedUpdateRequestAe.primitiveContent.aE := mw_contentAeUpdateRequest;
-						v_expectedUpdateRequestAe.primitiveContent := f_getTemplateFromPrimitiveContent(p_utRequestTestBody.primitiveContent);
-					   
 					   tc_ac.start;
 					   alt{
-							[] mcaPortIn.receive(mw_request(v_expectedUpdateRequestAe)) -> value v_request {
+							[] mcaPortIn.receive(mw_request(p_expectedUpdateRequest)) -> value v_request {
 							   tc_ac.stop;
 							   setverdict(pass, __SCOPE__, " : AE registration update request is accepted!");
-								v_responsePrimitive := valueof(m_responsePrimitive(int2001, "To_be_defined", omit));
+								v_responsePrimitive := valueof(m_responsePrimitive(int2004, v_request.primitive.requestPrimitive.requestIdentifier, omit));
 	
 							   //send back responsePrimitive
 								mcaPortIn.send(m_response(v_responsePrimitive));
@@ -1517,7 +1544,7 @@ module OneM2M_Testcases_AE {
 								setverdict(pass, __SCOPE__, " : Container update request is accepted!!");
 
 								//set responseStatusCode back to SUT
-								v_responsePrimitive := valueof(m_responsePrimitive(int2001, "To_be_defined", omit));
+								v_responsePrimitive := valueof(m_responsePrimitive(int2004, "To_be_defined", omit));
 
 								//send back responsePrimitive
 								mcaPortIn.send(m_response(v_responsePrimitive));
-- 
GitLab