From 9c9cc5f6a3689e4dfd9438fa2ba1bad1149b7fc4 Mon Sep 17 00:00:00 2001
From: reinaortega <miguelangel.reinaortega@etsi.org>
Date: Wed, 14 Mar 2018 22:09:40 +0100
Subject: [PATCH] AE testing - Correct handling of CREATE Requests from AE

Signed-off-by: reinaortega <miguelangel.reinaortega@etsi.org>
---
 LibOneM2M/OneM2M_Functions.ttcn  | 56 ++++++++++++++++++++++----------
 OneM2M_PermutationFunctions.ttcn | 20 +++++-------
 2 files changed, 46 insertions(+), 30 deletions(-)

diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 575401f..5e03234 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -2377,11 +2377,10 @@ module OneM2M_Functions {
 			function f_ae_preamble_registerAe(template UtTriggerPrimitive p_utRequest := m_create) runs on CseSimu return integer {
     		
 				var MsgIn v_request;
-				var PrimitiveContent v_modifiedResource;
-				var integer v_resourceIndex, v_parentIndex;
-				var RequestPrimitive v_rp;
+				var integer v_localResourceIndex, v_parentIndex;
 				var charstring v_action := "Please, register the AE on the Tester";
-
+				
+				p_utRequest.to_ := f_getLocalResourceAddress(-,-,-);
 				if(not(ispresent(p_utRequest.primitiveContent))) {
 					p_utRequest.primitiveContent.aE := m_contentCreateAe(omit, omit, omit, omit);
 				}
@@ -2393,18 +2392,10 @@ module OneM2M_Functions {
 					[] 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_modifiedResource := f_ae_generateLocalResource(v_rp.primitiveContent, v_parentIndex, v_rp.resourceType);
-						v_resourceIndex := f_setLocalResource(v_modifiedResource, int2, v_parentIndex);
-						if(v_resourceIndex != -1) {
-							mcaPortIn.send(m_response(m_responsePrimitive_content(int2001, v_rp.requestIdentifier, v_modifiedResource)));
-							setverdict(pass, __SCOPE__&":INFO: Application registered successfuly");
-						}
-						else {
-							mcaPortIn.send(m_response(m_responsePrimitive(int5000, v_request.primitive.requestPrimitive.requestIdentifier)));
-							setverdict(inconc, __SCOPE__&":INFO: AE registration failed");
-						}					
+						v_localResourceIndex := f_processCreateRequestPrimitive(v_request.primitive.requestPrimitive);
+						
+						mcaPortIn.send(m_response(vc_response.primitive.responsePrimitive));
+							
 					}
     					
 					[] tc_ac.timeout {
@@ -2415,7 +2406,7 @@ module OneM2M_Functions {
 				
 				f_checkCseSimuStatus();	
     			
-				return v_resourceIndex;	
+				return v_localResourceIndex;	
 			}//end function f_ae_preamble_register
 			
 			            
@@ -2531,7 +2522,7 @@ module OneM2M_Functions {
 				// Error
 				return p_resource;
 			}
-			
+
 		} // end helpingFunctions
 		
 		group altstepFunctions {
@@ -3304,6 +3295,35 @@ module OneM2M_Functions {
 			
 			
 		} // end f_getAnnouncedResourceType
+		
+		/**
+		 * @desc   Proccessing of the request primitive
+		 * @param  p_request          Request primitive to be processed
+		 * @return p_response 		Response primitive to be sent back
+		 */
+		function f_processCreateRequestPrimitive(in RequestPrimitive p_request) runs on CseSimu return integer {			
+			var integer v_parentIndex := -1;
+			var integer v_localResourceIndex := -1;
+			var PrimitiveContent v_localResource;
+				
+			v_parentIndex := f_getResourceIndex(p_request.to_);
+			if(v_parentIndex == -1) {
+				setverdict(inconc,__SCOPE__&": ERROR: Target resource not found");
+				vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int4004,p_request.requestIdentifier));
+		
+			} else {
+				setverdict(pass, __SCOPE__&":INFO: Resource created successfuly");
+				v_localResource := f_ae_generateLocalResource(p_request.primitiveContent, v_parentIndex, p_request.resourceType);
+				v_localResourceIndex := f_setLocalResource(v_localResource, p_request.resourceType, v_parentIndex);
+	
+				vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int2001,p_request.requestIdentifier));
+				vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource;
+			}
+			vc_response.primitive.responsePrimitive.from_ := PX_CSE1_ID;
+			vc_response.primitive.responsePrimitive.to_ := p_request.from_;
+				
+			return v_localResourceIndex;
+		}
     				
 	}//end group getSetFunctions
 	
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index 97a498d..ebbf250 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -242,7 +242,7 @@ module OneM2M_PermutationFunctions {
 						f_cf03Up();
 			
 						//Send Trigger Message
-						v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), -1, int3);
+						v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3);
 						v_auxInteger := f_setLocalResource(v_localResource, int3);
 						v_utRequestTemplate := m_utRetrieveResource(f_getLocalResourceAddress(v_auxInteger, e_nonHierarchical, p_primitiveScope),"UNINITIALIZED");
 						f_sendUtPrimitive(v_utRequestTemplate,v_action);
@@ -289,7 +289,7 @@ module OneM2M_PermutationFunctions {
 						f_cf03Up();
 
 						//Send Trigger Message
-						v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), -1, int3);
+						v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3);
 						v_auxInteger := f_setLocalResource(v_localResource, int3);
 						v_utRequestTemplate := m_utRetrieveResource(f_getLocalResourceAddress(v_auxInteger, e_hierarchical, p_primitiveScope),"UNINITIALIZED");
                         v_utRequest := valueof(v_utRequestTemplate);
@@ -340,7 +340,7 @@ module OneM2M_PermutationFunctions {
 						f_cf03Up();
 			
 						//Send Trigger Message
-						v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), -1, int3);
+						v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3);
 						v_auxInteger := f_setLocalResource(v_localResource, int3);
 						v_utRequest.to_ := f_getLocalResourceAddress(v_auxInteger, e_nonHierarchical, p_primitiveScope);
 						v_utRequest.from_ := "UNINITIALIZED";
@@ -386,7 +386,7 @@ module OneM2M_PermutationFunctions {
 						f_cf03Up();
 
 						//Send Trigger Message
-						v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), -1, int3);
+						v_localResource := f_ae_generateLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), vc_cSEBaseIndex, int3);
 						v_auxInteger := f_setLocalResource(v_localResource, int3);
 						v_utRequest.to_ := f_getLocalResourceAddress(v_auxInteger, e_hierarchical, p_primitiveScope);
 						v_utRequest.from_ := "UNINITIALIZED";
@@ -583,14 +583,10 @@ module OneM2M_PermutationFunctions {
 							[] mcaPortIn.receive(mw_request(p_expectedUpdateRequest)) -> value v_request {
 							   tc_ac.stop;
 							   setverdict(pass, __SCOPE__, " : AE update request is accepted!");
-								v_parentIndex := f_getResourceIndex(v_request.primitive.requestPrimitive.to_);
-								v_modifiedResource := f_ae_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, v_parentIndex, v_request.primitive.requestPrimitive.resourceType);
-								v_resourceIndex := f_setLocalResource(v_modifiedResource, v_request.primitive.requestPrimitive.resourceType, v_parentIndex);	
-								if(v_resourceIndex != -1) {
-									mcaPortIn.send(m_response(m_responsePrimitive_content(int2004, v_request.primitive.requestPrimitive.requestIdentifier, v_modifiedResource)));
-								}
-							   //send back responsePrimitive
-								//mcaPortIn.send(m_response(v_responsePrimitive));
+							   
+							   v_resourceIndex := f_processCreateRequestPrimitive(v_request.primitive.requestPrimitive);
+							   
+							   mcaPortIn.send(m_response(v_responsePrimitive));
 						   }
 							[] mcaPortIn.receive(mw_request(?)) -> value v_request {
 							   tc_ac.stop;
-- 
GitLab