From b533ce9b7e2cfb3681a82ba270864876cd7aa9be Mon Sep 17 00:00:00 2001
From: Pramod Kulkarni <pkulkarni75@gmail.com>
Date: Wed, 25 Apr 2018 12:03:01 +0100
Subject: [PATCH] Corrections to TC ANNC/001 and function
 f_cse_announcementProcedure_createHandler

---
 LibOneM2M/OneM2M_Functions.ttcn     | 28 ++++++++++++++++++++--------
 OneM2M_PermutationFunctions.ttcn    | 12 ++++++++----
 OneM2M_Testcases_CSE_Release_2.ttcn | 14 +++++++-------
 3 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 938b5f0..7fdd51e 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -1720,7 +1720,7 @@ module OneM2M_Functions {
 				 * @verdict 
 				 */
 				 //TODO To finalize this function
-				function f_cse_announcementProcedure_createHandler(template RequestPrimitive p_requestprimitive := ?, in ResponseStatusCode p_responseStatusCode := int2001) runs on CseSimu {
+				function f_cse_announcementProcedure_createHandler(template RequestPrimitive p_requestprimitive := ?, in ResponseStatusCode p_responseStatusCode := int2001, template(omit) integer p_expectedResourceIndex := omit) runs on CseSimu {
 					// Local variables
 					var MsgIn v_request;
 					var integer v_parentIndex := vc_localRemoteCseIndex;
@@ -1739,15 +1739,27 @@ module OneM2M_Functions {
 							//TODO Save resource and generate required attributes
 							v_announcedResource:= f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, v_parentIndex,v_request.primitive.requestPrimitive.resourceType);
 							v_announcedResourceIndex := f_setLocalResource(v_announcedResource, v_request.primitive.requestPrimitive.resourceType, v_parentIndex);
-						
-							v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier));
-							v_responsePrimitive.from_ := PX_CSE1_ID;
-							v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_;
-							if(p_responseStatusCode == int2001) {
-								v_responsePrimitive.primitiveContent := vc_localResourcesList[v_announcedResourceIndex].resource;
+							
+							if(isvalue(p_expectedResourceIndex)){
+								if(p_expectedResourceIndex == f_getResourceIndex(v_request.primitive.requestPrimitive.to_)){
+									setverdict(pass, __SCOPE__ & ":INFO: Announcement Parent Resource Address matched");
+									v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier));
+									v_responsePrimitive.primitiveContent := vc_localResourcesList[p_expectedResourceIndex].resource;
+								} else {
+									setverdict(fail, __SCOPE__ & ":ERROR: Announcement Parent Resource Address not matched");
+									v_responsePrimitive := valueof(m_responsePrimitive(int4000,v_request.primitive.requestPrimitive.requestIdentifier));
+									v_responsePrimitive.primitiveContent := omit;
+								}	
 							} else {
-								v_responsePrimitive.primitiveContent := omit;
+								v_responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,v_request.primitive.requestPrimitive.requestIdentifier));
+								if(p_responseStatusCode == int2001) {
+									v_responsePrimitive.primitiveContent := vc_localResourcesList[v_announcedResourceIndex].resource;
+								} else {
+									v_responsePrimitive.primitiveContent := omit;
+								}
 							}
+							v_responsePrimitive.from_ := PX_CSE1_ID;
+							v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_;
 							mccPortIn.send(m_response(v_responsePrimitive));			
 						}
 						[] tc_ac.timeout {
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index 5c3eacf..0c6e958 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -6390,8 +6390,9 @@ module OneM2M_PermutationFunctions {
 					var integer v_aeIndex := -1;
 					var integer v_resourceIndex;
 					var ResponsePrimitive v_responsePrimitive;
+					var integer v_AEAnncResourceIndex;
 					var template RequestPrimitive v_create := m_createAe(PX_APP_ID, omit, omit);
-					v_create.primitiveContent.aE.announceTo := {PX_CSE_ID};
+					v_create.primitiveContent.aE.announceTo := {PX_CSE1_ID};
 				   
 					// Test control
 
@@ -6418,7 +6419,10 @@ module OneM2M_PermutationFunctions {
 					  	v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_parentIndex);
 					  	v_responsePrimitive.responseStatusCode := int2001;
 					}
-					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc));	
+					
+					//Retrieve the parent resource index
+					v_AEAnncResourceIndex := f_getLatestResourceIndex(vc_cse1);
+					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc, -, v_AEAnncResourceIndex));	
 					mcaPort.send(m_request(v_request));
 
 					tc_ac.start;
@@ -6549,7 +6553,7 @@ module OneM2M_PermutationFunctions {
 	
 					// Test Body
 					v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestCreatePrimitive, v_parentIndex);
-					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc, int4000));	
+					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc,int4000));	
 					mcaPort.send(m_request(v_request));
 
 					tc_ac.start;
@@ -7873,7 +7877,7 @@ module OneM2M_PermutationFunctions {
 	
 					v_resourceIndex := f_cse_createResource(p_resourceType, p_requestCreatePrimitive, v_aeIndex);
 						  	
-					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc, int4000));
+					vc_cse1.start(f_cse_announcementProcedure_createHandler(p_createRequestAnnc,  int4000));
 					v_updateRequest := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_requestUpdatePrimitive);
 					mcaPort.send(m_request(v_updateRequest));
 
diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn
index 3c02d4c..02f298f 100644
--- a/OneM2M_Testcases_CSE_Release_2.ttcn
+++ b/OneM2M_Testcases_CSE_Release_2.ttcn
@@ -7104,7 +7104,7 @@ module OneM2M_Testcases_CSE_Release_2 {
 						var template RequestPrimitive v_updateRequest := m_updateAcpBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc;
   
-						v_updateRequest.primitiveContent.accessControlPolicy.announceTo := {f_getAnnouncementTargetPoA()};
+						v_updateRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID};
                   
 						v_ae1.start(f_CSE_ANNC_001(int1, v_createRequestAnnc, omit, v_updateRequest));//AccessControlPolicy
 						v_ae1.done;
@@ -7116,7 +7116,7 @@ module OneM2M_Testcases_CSE_Release_2 {
 						var template RequestPrimitive v_createRequest := m_createAcpBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createAccessControlPolicyAnnc;
   
-						v_createRequest.primitiveContent.accessControlPolicy.announceTo := {f_getAnnouncementTargetPoA()};
+						v_createRequest.primitiveContent.accessControlPolicy.announceTo := {PX_CSE1_ID};
   
 						v_ae1.start(f_CSE_ANNC_001(int1, v_createRequestAnnc, v_createRequest, omit));//AccessControlPolicy
 						v_ae1.done;
@@ -7128,7 +7128,7 @@ module OneM2M_Testcases_CSE_Release_2 {
 						var template RequestPrimitive v_updateRequest := m_updateContainerBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase;
   
-						v_updateRequest.primitiveContent.container.announceTo := {f_getAnnouncementTargetPoA()};
+						v_updateRequest.primitiveContent.container.announceTo := {PX_CSE1_ID};
   
 						v_ae1.start(f_CSE_ANNC_001(int3, v_createRequestAnnc, omit, v_updateRequest));//Container
 						v_ae1.done;
@@ -7140,7 +7140,7 @@ module OneM2M_Testcases_CSE_Release_2 {
 						var template RequestPrimitive v_createRequest := m_createContainerBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createContainerAnncBase;
   
-						v_createRequest.primitiveContent.container.announceTo := {f_getAnnouncementTargetPoA()};
+						v_createRequest.primitiveContent.container.announceTo := {PX_CSE1_ID};
   
 						v_ae1.start(f_CSE_ANNC_001(int3, v_createRequestAnnc, v_createRequest, omit));//Container
 						v_ae1.done;
@@ -7152,7 +7152,7 @@ module OneM2M_Testcases_CSE_Release_2 {
 						var template RequestPrimitive v_updateRequest := m_updateGroupBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase;
   
-						v_updateRequest.primitiveContent.group_.announceTo := {f_getAnnouncementTargetPoA()};
+						v_updateRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID};
   
 						v_ae1.start(f_CSE_ANNC_001(int9, v_createRequestAnnc, omit, v_updateRequest));//Group
 						v_ae1.done;
@@ -7164,7 +7164,7 @@ module OneM2M_Testcases_CSE_Release_2 {
 						var template RequestPrimitive v_createRequest := m_createGroupBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createGroupAnncBase;
   
-						v_createRequest.primitiveContent.group_.announceTo := {f_getAnnouncementTargetPoA()};
+						v_createRequest.primitiveContent.group_.announceTo := {PX_CSE1_ID};
   
 						v_ae1.start(f_CSE_ANNC_001(int9, v_createRequestAnnc, v_createRequest, omit));//Group
 						v_ae1.done;
@@ -7176,7 +7176,7 @@ module OneM2M_Testcases_CSE_Release_2 {
 						var template RequestPrimitive v_createRequest := m_createContentInstanceBase;
 						var template RequestPrimitive v_createRequestAnnc := mw_createContentInstanceAnncBase;
   
-						v_createRequest.primitiveContent.contentInstance.announceTo := {f_getAnnouncementTargetPoA()};
+						v_createRequest.primitiveContent.contentInstance.announceTo := {PX_CSE1_ID};
   
 						v_ae1.start(f_CSE_ANNC_001(int4, v_createRequestAnnc, v_createRequest, omit));//ContentInstance
 						v_ae1.done;
-- 
GitLab