From 6996729b52ac8e9d5ccaa986d18a32741427ea3c Mon Sep 17 00:00:00 2001
From: pkulkarni <pkulkarni75@gmail.com>
Date: Wed, 14 Jun 2017 10:17:21 +0200
Subject: [PATCH] Following Testcases for DMR have been implemented:
 DMR/CRE/BV/001_18,DMR/CRE/BV/001_19,DMR/CRE/BV/001_20,DMR/CRE/BV/001_21,DMR/CRE/BV/001_22,DMR/CRE/BV/001_23,DMR/CRE/BV/001_24

---
 LibOneM2M/OneM2M_Templates.ttcn      | 234 ++++++++++++++
 LibOneM2M/OneM2M_Types.ttcn          | 102 ++++++
 LibOneM2M/OneM2M_TypesAndValues.ttcn |   5 +
 OneM2M_TestControl.ttcn              |   1 +
 OneM2M_Testcases.ttcn                | 464 +++++++++++++++++++++++++++
 5 files changed, 806 insertions(+)

diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 2ccde6f..de47aa0 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -188,6 +188,56 @@ module OneM2M_Templates {
 				localTokenIDs := omit,
 				tokenRequestIndicator := omit
 			};
+			
+			/**
+			  * @desc RETRIEVE request primtive containing the Filter Criteria in the filterCriteria field
+			  * @param p_targetResourceAddress Target resource address 
+			  * @param p_filterCriteria FilterCriteria
+			  * @param p_originator Originator (from)
+		     */
+			template (value) RequestPrimitive m_retrieveResourceFilterUsageOption(XSD.ID p_targetResourceAddress, in XSD.ID p_originator, in template (value) FilterUsage p_filterUsage) modifies m_retrieveResource := {
+				requestIdentifier := "m_retrieveResourceFilterUsageOption" & f_rnd(1, 1000000),
+				filterCriteria := {
+					contentType_list := {}, 
+					attribute_list := {}, 
+					filterUsage := p_filterUsage,
+					semanticsFilter_list := {}
+				}
+			};
+			
+			/**
+			  * @desc RETRIEVE request primtive containing the Discovery Type in the discoveryResultType field and Filter Criteria in the filterCriteria field
+			  * @param p_targetResourceAddress Target resource address 
+			  * @param p_filterCriteria FilterCriteria
+			  * @param p_originator Originator (from)
+			 */
+			template (value) RequestPrimitive m_retrieveResourceDiscResTypeFilterUsageOption(XSD.ID p_targetResourceAddress, in XSD.ID p_originator, in template (value) DiscResType p_discResType, in template (value) FilterUsage p_filterUsage) modifies m_retrieveResource := {
+				requestIdentifier := "m_retrieveResourceFilterUsageOption" & f_rnd(1, 1000000),
+				filterCriteria := {
+					contentType_list := {}, 
+					attribute_list := {}, 
+					filterUsage := p_filterUsage,
+					semanticsFilter_list := {}
+				},
+				discoveryResultType := p_discResType
+			};
+			
+			/**
+				  * @desc RETRIEVE request primtive containing the Discovery Type in the discoveryResultType field and Filter Criteria in the filterCriteria field
+				  * @param p_targetResourceAddress Target resource address 
+				  * @param p_filterCriteria FilterCriteria
+				  * @param p_originator Originator (from)
+				 */
+				template (value) RequestPrimitive m_retrieveResourceInvalidFormatOption(XSD.ID p_targetResourceAddress, in XSD.ID p_originator) modifies m_retrieveResource := {
+					requestIdentifier := "m_retrieveResourceFilterUsageOption" & f_rnd(1, 1000000),
+					filterCriteria := {
+						contentType_list := {}, 
+						attribute_list := {}, 
+						filterUsage := omit,
+						semanticsFilter_list := {}
+					}
+				};
+			
     	}//end group Retrieve
 
     	group Update {
@@ -579,6 +629,15 @@ module OneM2M_Templates {
 				primitiveContent := {groupAnnc_optional := mw_contentCreateGroupAnncBase}
 			};
         	
+        	/**
+			 * @desc Base CREATE request primitive for MgmtCmd resource
+			 */
+			template (value) RequestPrimitive m_createMgmtCmdBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createMgmtCmd" & f_rnd(1, 1000000),
+				resourceType := int12,
+				primitiveContent := {mgmtResource_optional := m_contentCreateMgmtCmd (-,-)}
+			};
+			
 			/**
 			 * @desc Base CREATE request primitive for MgmtObj resource
 			 */
@@ -694,6 +753,14 @@ module OneM2M_Templates {
 				primitiveContent := {serviceSubscribedAppRule_optional := m_contentCreateServiceSubscribedAppRule (p_applicableCredIDs, p_allowedAppIDs, p_allowedAEs)}
 			};
         	
+			/**
+			 * @desc Base CREATE request primitive for ServiceSubscribedAppRule Resource
+			 */
+			template (value) RequestPrimitive m_createServiceSubscribedAppRuleBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createServiceSubscribedAppRuleBase" & f_rnd(1, 1000000),
+				resourceType := int19,
+				primitiveContent := {serviceSubscribedAppRule_optional := m_contentCreateServiceSubscribedAppRuleBase}
+			};
        	
 			/**
 			 * @desc Base CREATE request primitive for Subscription resource
@@ -723,6 +790,15 @@ module OneM2M_Templates {
 				primitiveContent := {subscription_optional := m_contentCreateSubscriptionAdvanced (p_notificationURI, p_name, p_eventNotificationCriteria, p_expirationCounter, p_batchNotify, p_latestNotify, p_subscriberURI, p_notificationContentType)}
 			};
         	
+        	/**
+			 * @desc Base CREATE request primitive for Location Policy resource
+			 */
+			template (value) RequestPrimitive m_createLocationPolicyBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createLocationPolicy" & f_rnd(1, 1000000),
+				resourceType := int10,
+				primitiveContent := {locationPolicy_optional := m_contentCreateLocationPolicyBase}
+			};
+        	
         	template (value) RequestPrimitive m_createLocationPolicy(in template (value) LocationSource p_locationSource, in template (omit) AcpType p_accessControlPolicyIds, in template (omit) XSD.Duration p_locationUpdatePeriod, in template (omit) NodeID p_locationTargetID, in template (omit) XSD.AnyURI p_locationServerAddress) modifies m_create := {
         		
         	  	requestIdentifier	:= testcasename() & "-m_createLocationPolicy" & f_rnd(1, 1000000), //the requestIdentifier is supposed to be set similar as "C190XX7T/001"  by prepending the AE-ID-Stem and slash(‘/’) in front of it
@@ -762,6 +838,33 @@ module OneM2M_Templates {
 				primitiveContent := {semanticDescriptor_optional := p_semanticDescriptor}
 			};
 			
+			/**
+			 * @desc Base CREATE request primitive for Stats Config resource
+			 */
+			template (value) RequestPrimitive m_createStatsConfigBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createStatsConfig" & f_rnd(1, 1000000),
+				resourceType := int22,
+				primitiveContent := {statsConfig_optional := m_contentCreateStatConfigBase}
+			};
+			
+			/**
+			 * @desc Base CREATE request primitive for Stats Config resource
+			 */
+			template (value) RequestPrimitive m_createStatsCollectBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createStatsCollect" & f_rnd(1, 1000000),
+				resourceType := int21,
+				primitiveContent := {statsCollect_optional := m_contentCreateStatCollectBase}
+			};
+			
+			/**
+			 * @desc Base CREATE request primitive for M2mServiceSubscriptionProfile resource
+			 */
+			template (value) RequestPrimitive m_createM2mServiceSubscriptionProfileBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createM2mServiceSubscriptionProfile" & f_rnd(1, 1000000),
+				resourceType := int11,
+				primitiveContent := {m2mServiceSubscriptionProfile_optional := m_contentCreatem2mServiceSubscriptionProfileBase}
+			};
+			
     	}//end group Create
     	
     	group Delete {
@@ -1129,6 +1232,31 @@ module OneM2M_Templates {
 			description := omit//O
 		};	  	
 		
+		/**
+		 * @desc Base primitiveContent for CREATE operation for MgmtCmd resource
+		 * @param p_name Resource name
+		 * @param p_accessControlPolicyIds ACP IDs for the AE
+		 */
+		template (value) MgmtResource_optional m_contentCreateMgmtCmd (in template (omit) AcpType p_accessControlPolicyIds := omit, in template (omit)  XSD.String p_name := c_defaultMgmtCmdResourceName) := {
+			
+			resourceName := p_name,//O
+			resourceType := omit,//NP
+			resourceID := omit,//NP
+			parentID := omit,//NP
+			creationTime := omit,//NP
+			lastModifiedTime := omit,//NP
+			labels := omit,//O
+			accessControlPolicyIDs := p_accessControlPolicyIds,//O
+			expirationTime := omit,//O
+			dynamicAuthorizationConsultationIDs := omit, //O
+			announceTo := omit,//O
+			announcedAttribute := omit,//O
+			mgmtDefinition := omit,//O
+			objectIDs := omit,//O
+			objectPaths := omit,//O
+			description := omit//O
+		};
+		
 		/**
 		 * @desc Base reception template of primitiveContent for CREATE operation for MgmtObjAnnc resource
 		 */
@@ -1453,6 +1581,29 @@ module OneM2M_Templates {
     	   	  	
     	};
     	
+		template (value) LocationPolicy_optional m_contentCreateLocationPolicyBase := {
+				resourceName 				:= c_defaultLocationPolicyResourceName, //O
+				resourceType				:= omit, //NP
+				resourceID					:= omit, //NP
+				parentID					:= omit, //NP
+				creationTime				:= omit, //NP
+				lastModifiedTime			:= omit, //NP
+				labels 						:= PX_LABELS,//O
+				accessControlPolicyIDs 	:= omit, //O
+				expirationTime 			:= omit, //O
+				dynamicAuthorizationConsultationIDs := omit, //O
+				announceTo 				:= omit, 				   //O
+				announcedAttribute		:= omit, 			      //O
+				locationSource 			:= omit, //M
+				locationUpdatePeriod 		:= omit, //O
+				locationTargetID 			:= omit, 	//O
+				locationServer 			:= omit,//O
+				locationContainerID		:= omit,    		   //NP
+				locationContainerName 	:= PX_LOCATION_CONTAINER_NAME,//O    		
+				locationStatus				:= omit,              //NP
+				choice 					:= omit  	         //NP
+			};
+    	
 	  /**
 	  * @desc Base reception template of primitiveContent for CREATE operation for LocationPolicyAnnc resource
 	  */
@@ -1530,6 +1681,89 @@ module OneM2M_Templates {
 			ontologyRef := p_ontologyRef
 		}  
 		
+		/**
+			 * @desc Base primitiveContent for CREATE operation for StatConfig resource
+			 * @param p_primitiveContent Content for the StatConfig
+			 */
+		template StatsConfig_optional m_contentCreateStatConfigBase := {
+			resourceName 				:= c_defaultStatsConfigResourceName, //O
+			resourceType				:= omit, //NP
+			resourceID					:= omit, //NP
+			parentID					:= omit, //NP
+			creationTime				:= omit, //NP
+			lastModifiedTime			:= omit, //NP
+			labels 						:= PX_LABELS,//O
+			accessControlPolicyIDs 	:= omit, //O
+			expirationTime 			:= omit, //O
+			dynamicAuthorizationConsultationIDs := omit, //O
+			creator                 := omit,
+			choice 					:= omit  	         //NP
+		};
+		
+		/**
+			 * @desc Base primitiveContent for CREATE operation for StatCollect resource
+			 * @param p_primitiveContent Content for the StatCollect
+			 */
+		template StatsCollect_optional m_contentCreateStatCollectBase := {
+			resourceName 				:= c_defaultStatsCollectResourceName, //O
+			resourceType				:= omit, //NP
+			resourceID					:= omit, //NP
+			parentID					:= omit, //NP
+			creationTime				:= omit, //NP
+			lastModifiedTime			:= omit, //NP
+			labels 						:= PX_LABELS,//O
+			accessControlPolicyIDs 	:= omit, //O
+			expirationTime 			:= omit, //O
+			dynamicAuthorizationConsultationIDs := omit, //O
+			creator                 := omit,
+			statsCollectID          := omit,
+			collectingEntityID      := omit,
+			collectedEntityID       := omit,
+			statsRuleStatus         := omit,
+			statModel               := omit,
+			collectPeriod           := omit,
+			eventID                 := omit,
+			choice 					:= omit  	         //NP
+		};
+		
+		/**
+			 * @desc Base primitiveContent for CREATE operation for M2mServiceSubscriptionProfile resource
+			 * @param p_primitiveContent Content for the M2mServiceSubscriptionProfile
+			 */
+		template M2mServiceSubscriptionProfile_optional m_contentCreatem2mServiceSubscriptionProfileBase := {
+			resourceName 				:= c_defaultm2mServiceSubscriptionProfileResourceName, //O
+			resourceType				:= omit, //NP
+			resourceID					:= omit, //NP
+			parentID					:= omit, //NP
+			creationTime				:= omit, //NP
+			lastModifiedTime			:= omit, //NP
+			labels 						:= PX_LABELS,//O
+			accessControlPolicyIDs 	:= omit, //O
+			expirationTime 			:= omit, //O
+			dynamicAuthorizationConsultationIDs := omit, //O
+			choice 					:= omit  	         //NP
+		};
+		
+		/**
+		  * @desc Base primitiveContent for CREATE operation for ServiceSubscribedAppRule_optional resource
+		  * @param p_primitiveContent Content for the ServiceSubscribedAppRule_optional
+		 */
+		template ServiceSubscribedAppRule_optional m_contentCreateServiceSubscribedAppRuleBase := {
+			resourceName 				:= c_defaultServiceSubscribedAppRuleResourceName, //O
+			resourceType				:= omit, //NP
+			resourceID					:= omit, //NP
+			parentID					:= omit, //NP
+			creationTime				:= omit, //NP
+			lastModifiedTime			:= omit, //NP
+			labels 						:= PX_LABELS,//O
+			accessControlPolicyIDs 	:= omit, //O
+			expirationTime 			:= omit, //O
+			dynamicAuthorizationConsultationIDs := omit, //O
+			applicableCredIDs       := omit,
+			allowedApp_IDs          := omit,
+			allowedAEs              := omit,
+			choice 					:= omit  	         //NP   
+		};
 	}//end group ContentCreate
 	
 	group ContentUpdate {
diff --git a/LibOneM2M/OneM2M_Types.ttcn b/LibOneM2M/OneM2M_Types.ttcn
index 21733ae..e1b33b9 100644
--- a/LibOneM2M/OneM2M_Types.ttcn
+++ b/LibOneM2M/OneM2M_Types.ttcn
@@ -1644,6 +1644,9 @@ type union PrimitiveContent {
 	PollingChannel_optional pollingChannel_optional,
 	Schedule_optional schedule_optional,
 	ScheduleAnnc_optional scheduleAnnc_optional,
+	StatsConfig_optional statsConfig_optional,
+	StatsCollect_optional statsCollect_optional,
+	M2mServiceSubscriptionProfile_optional m2mServiceSubscriptionProfile_optional,
 	ServiceSubscribedAppRule_optional serviceSubscribedAppRule_optional,
 	Subscription_optional subscription_optional,
 	SemanticDescriptor_optional semanticDescriptor_optional,
@@ -7495,6 +7498,105 @@ with {
   variant (choice.choice_list[-]) "untagged";
 };
 
+type record StatsConfig_optional
+{
+	ResourceName resourceName optional,
+	ResourceType resourceType optional,
+	XSD.ID resourceID optional,
+	NhURI parentID optional,
+	Timestamp creationTime optional,
+	Timestamp lastModifiedTime optional,
+	Labels labels optional,
+	AcpType accessControlPolicyIDs optional,
+	Timestamp expirationTime optional,
+	ListOfURIs dynamicAuthorizationConsultationIDs optional,
+	XSD.ID creator optional,
+	union {
+		record length(1 .. infinity) of ChildResourceRef childResource_list,
+		record length(1 .. infinity) of union {
+			EventConfig eventConfig,
+			Subscription subscription
+		} choice_list
+	} choice optional
+}
+with {
+  variant "name as uncapitalized";
+  variant "element";
+  variant (resourceName) "attribute";
+  variant (choice) "untagged";
+  variant (choice.childResource_list) "untagged";
+  variant (choice.childResource_list[-]) "name as 'childResource'";
+  variant (choice.choice_list) "untagged";
+  variant (choice.choice_list[-]) "untagged";
+};
+
+type record StatsCollect_optional
+{
+	ResourceName resourceName optional,
+	ResourceType resourceType optional,
+	XSD.ID resourceID optional,
+	NhURI parentID optional,
+	Timestamp creationTime optional,
+	Timestamp lastModifiedTime optional,
+	Labels labels optional,
+	AcpType accessControlPolicyIDs optional,
+	Timestamp expirationTime optional,
+	ListOfURIs dynamicAuthorizationConsultationIDs optional,
+	XSD.ID creator optional,
+	XSD.String statsCollectID optional,
+	XSD.ID collectingEntityID optional,
+	XSD.ID collectedEntityID optional,
+	StatsRuleStatusType statsRuleStatus optional,
+	StatModelType statModel optional,
+	ScheduleEntries collectPeriod optional,
+	XSD.String eventID optional,
+	union {
+		record length(1 .. infinity) of ChildResourceRef childResource_list,
+		record length(1 .. infinity) of Subscription subscription_list
+	} choice optional
+}
+with {
+  variant "name as uncapitalized";
+  variant "element";
+  variant (resourceName) "attribute";
+  variant (choice) "untagged";
+  variant (choice.childResource_list) "untagged";
+  variant (choice.childResource_list[-]) "name as 'childResource'";
+  variant (choice.subscription_list) "untagged";
+  variant (choice.subscription_list[-]) "name as 'subscription'";
+};
+
+type record M2mServiceSubscriptionProfile_optional
+{
+	ResourceName resourceName optional,
+	ResourceType resourceType optional,
+	XSD.ID resourceID optional,
+	NhURI parentID optional,
+	Timestamp creationTime optional,
+	Timestamp lastModifiedTime optional,
+	Labels labels optional,
+	AcpType accessControlPolicyIDs optional,
+	Timestamp expirationTime optional,
+	ListOfURIs dynamicAuthorizationConsultationIDs optional,
+	union {
+		record length(1 .. infinity) of ChildResourceRef childResource_list,
+		record length(1 .. infinity) of union {
+			ServiceSubscribedNode serviceSubscribedNode,
+			Subscription subscription
+		} choice_list
+	} choice optional
+}
+with {
+  variant "name as uncapitalized";
+  variant "element";
+  variant (resourceName) "attribute";
+  variant (choice) "untagged";
+  variant (choice.childResource_list) "untagged";
+  variant (choice.childResource_list[-]) "name as 'childResource'";
+  variant (choice.choice_list) "untagged";
+  variant (choice.choice_list[-]) "untagged";
+};
+
 }//end group OptionalResourceTypes
 	
 	
diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn
index c64e3cf..a393a8d 100644
--- a/LibOneM2M/OneM2M_TypesAndValues.ttcn
+++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn
@@ -26,9 +26,14 @@ module OneM2M_TypesAndValues {
 	const XSD.String c_defaultContentInstanceResourceName := "MyContentInstanceResource";
 	const XSD.String c_defaultContainerResourceName := "MyContainerResource";
 	const XSD.String c_defaultMgmtObjResourceName := "MyMgmtObjResource";
+	const XSD.String c_defaultMgmtCmdResourceName := "MyMgmtCmdResource";
 	const XSD.String c_defaultAeResourceName := "MyAeResource";
 	const XSD.String c_defaultLocationPolicyResourceName := "MyLocationPolicyResource";
 	const XSD.String c_defaultNodeResourceName := "MyNodeResource";
+	const XSD.String c_defaultStatsConfigResourceName := "MyStatsConfigResource";
+	const XSD.String c_defaultStatsCollectResourceName := "MyStatsCollectResource";
+	const XSD.String c_defaultm2mServiceSubscriptionProfileResourceName := "Mym2mServiceSubscriptionProfileResource";
+	const XSD.String c_defaultServiceSubscribedAppRuleResourceName := "MyServiceSubscribedAppRuleResource";
 	const XSD.ID c_aeAuxName := "MyAe";
 	const XSD.String c_acpAuxName := "MyAcp";
 	const charstring c_invalid_location_update_period	:= "-PT30M10S" ;//duration set to invalid value  (minus value)
diff --git a/OneM2M_TestControl.ttcn b/OneM2M_TestControl.ttcn
index c8cd600..5f23afe 100644
--- a/OneM2M_TestControl.ttcn
+++ b/OneM2M_TestControl.ttcn
@@ -243,6 +243,7 @@ module OneM2M_TestControl {
 		execute(TC_CSE_GMG_BV_022_02());
 		execute(TC_CSE_GMG_BV_022_03());
 		execute(TC_CSE_GMG_BV_022_04());
+		execute(TC_CSE_DIS_BV_001());
 		execute(TC_CSE_SUB_BV_001_01());
 		execute(TC_CSE_SUB_BV_001_02());
 		execute(TC_CSE_SUB_BV_002());
diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn
index 87eec87..4ba2944 100644
--- a/OneM2M_Testcases.ttcn
+++ b/OneM2M_Testcases.ttcn
@@ -1351,6 +1351,202 @@ module OneM2M_Testcases {
 						}
 					}
 					
+					testcase TC_CSE_DMR_CRE_BV_001_18() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createNodeBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var integer v_sizeResourceTypeList;
+						var integer i;
+						var RequestPrimitiveMatrix v_requestPrimitivematrix;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						 
+						v_requestPrimitivematrix := {
+							{},
+							{valueof(m_createAeAux(omit,omit))},
+							{valueof(m_createNodeBase)}
+						}
+						v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
+						
+						v_createRequest.primitiveContent.node_optional.resourceName := omit;
+
+						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int14, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);//Node
+							if(getverdict == pass){
+								if(not ispresent(v_responsePrimitive.primitiveContent.node_optional.resourceName)){
+									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+								}
+							}
+						}
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_19() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createMgmtCmdBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var integer v_sizeResourceTypeList;
+						var integer i;
+						var RequestPrimitiveMatrix v_requestPrimitivematrix;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						 
+						v_requestPrimitivematrix := {
+							{},
+							{valueof(m_createAeAux(omit,omit))},
+							{valueof(m_createMgmtCmdBase)}
+						}
+						v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
+						
+						v_createRequest.primitiveContent.mgmtResource_optional.resourceName := omit;
+
+						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int14, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);//Node
+							if(getverdict == pass){
+								if(not ispresent(v_responsePrimitive.primitiveContent.mgmtResource_optional.resourceName)){
+									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+								}
+							}
+						}
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_20() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createLocationPolicyBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var integer v_sizeResourceTypeList;
+						var integer i;
+						var RequestPrimitiveMatrix v_requestPrimitivematrix;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						 
+						v_requestPrimitivematrix := {
+							{},
+							{valueof(m_createAeAux(omit,omit))},
+							{valueof(m_createLocationPolicyBase)}
+						}
+						v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
+						
+						v_createRequest.primitiveContent.locationPolicy_optional.resourceName := omit;
+
+						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int14, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);//Node
+							if(getverdict == pass){
+								if(not ispresent(v_responsePrimitive.primitiveContent.locationPolicy_optional.resourceName)){
+									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+								}
+							}
+						}
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_21() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createStatsConfigBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var integer v_sizeResourceTypeList;
+						var integer i;
+						var RequestPrimitiveMatrix v_requestPrimitivematrix;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						 
+						v_requestPrimitivematrix := {
+							{},
+							{valueof(m_createAeAux(omit,omit))},
+							{valueof(m_createStatsConfigBase)}
+						}
+						v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
+						
+						v_createRequest.primitiveContent.statsConfig_optional.resourceName := omit;
+
+						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int22, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);//Node
+							if(getverdict == pass){
+								if(not ispresent(v_responsePrimitive.primitiveContent.statsConfig_optional.resourceName)){
+									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+								}
+							}
+						}
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_22() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createStatsCollectBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var integer v_sizeResourceTypeList;
+						var integer i;
+						var RequestPrimitiveMatrix v_requestPrimitivematrix;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						 
+						v_requestPrimitivematrix := {
+							{},
+							{valueof(m_createAeAux(omit,omit))},
+							{valueof(m_createStatsCollectBase)}
+						}
+						v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
+						
+						v_createRequest.primitiveContent.statsCollect_optional.resourceName := omit;
+
+						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int21, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);//Node
+							if(getverdict == pass){
+								if(not ispresent(v_responsePrimitive.primitiveContent.statsCollect_optional.resourceName)){
+									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+								}
+							}
+						}
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_23() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createM2mServiceSubscriptionProfileBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var integer v_sizeResourceTypeList;
+						var integer i;
+						var RequestPrimitiveMatrix v_requestPrimitivematrix;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						 
+						v_requestPrimitivematrix := {
+							{},
+							{valueof(m_createAeAux(omit,omit))},
+							{valueof(m_createM2mServiceSubscriptionProfileBase)}
+						}
+						v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
+						
+						v_createRequest.primitiveContent.m2mServiceSubscriptionProfile_optional.resourceName := omit;
+
+						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int11, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);//Node
+							if(getverdict == pass){
+								if(not ispresent(v_responsePrimitive.primitiveContent.m2mServiceSubscriptionProfile_optional.resourceName)){
+									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+								}
+							}
+						}
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_24() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createServiceSubscribedAppRuleBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var integer v_sizeResourceTypeList;
+						var integer i;
+						var RequestPrimitiveMatrix v_requestPrimitivematrix;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						 
+						v_requestPrimitivematrix := {
+							{},
+							{valueof(m_createAeAux(omit,omit))},
+							{valueof(m_createServiceSubscribedAppRuleBase)}
+						}
+						v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
+						
+						v_createRequest.primitiveContent.serviceSubscribedAppRule_optional.resourceName := omit;
+
+						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int19, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);//Node
+							if(getverdict == pass){
+								if(not ispresent(v_responsePrimitive.primitiveContent.serviceSubscribedAppRule_optional.resourceName)){
+									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+								}
+							}
+						}
+					}
+					
     				function f_CSE_DMR_CRE_BV_001(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, in RequestPrimitiveList p_requestPrimitiveList, in CseTester p_notifyHandler) runs on CseTester return ResponsePrimitive {
     				
     					// Local variables
@@ -10312,6 +10508,274 @@ module OneM2M_Testcases {
 			} // end group g_CSE_GMG_BV_024
             
         } // end group Group_Managment
+        
+        group Discovery {
+        	
+        	group g_CSE_DIS_BV_001{
+        		testcase TC_CSE_DIS_BV_001() runs on CseTester system CseSystem {
+        			// Local variables
+					var MsgIn v_response;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var RequestPrimitive v_request;
+					var CseTester v_notifyHandler;
+					var integer v_ae2Index := -1;
+					const ResourceType c_containerResourceType := int3; 
+					
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred;
+					
+					v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex);
+					v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1));
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) -> value v_response {
+							tc_ac.stop;
+							if(not ischosen(v_response.primitive.responsePrimitive.primitiveContent.uRIList)){
+							  setverdict(fail, testcasename() & ": URI List Representation not present");	
+							}
+							else
+							{
+							  setverdict(pass, testcasename() & ": URI List Representation available");
+							}
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while retrieving resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, testcasename() & ": No answer while retrieving resource");
+						}
+					 }	
+    								
+					// Postamble
+					f_cse_postamble_deleteResources();
+					
+					// Tear down
+					f_cf01Down();
+        		} // end TC_CSE_DIS_BV_001
+        		
+        	} //end group g_CSE_DIS_BV_001
+        	
+        	group g_CSE_DIS_BV_003
+        	{
+        		testcase TC_CSE_DIS_BV_003() runs on CseTester system CseSystem {
+					// Local variables
+					var MsgIn v_response;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var RequestPrimitive v_request;
+					var CseTester v_notifyHandler;
+					var integer v_ae2Index := -1;
+					const ResourceType c_containerResourceType := int3; 
+				
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred;
+				
+					v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex);
+					v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1));
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+					
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) -> value v_response {
+							tc_ac.stop;
+							if(not ischosen(v_response.primitive.responsePrimitive.primitiveContent.uRIList)){
+							  setverdict(pass, testcasename() & ": No Content is present");	
+							}
+							else
+							{
+							  setverdict(fail, testcasename() & ": Content available");
+							}
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while retrieving resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, testcasename() & ": No answer while retrieving resource");
+						}
+					 }	
+								
+					// Postamble
+					f_cse_postamble_deleteResources();
+				
+					// Tear down
+					f_cf01Down();
+				} // end TC_CSE_DIS_BV_003
+        	} //end group g_CSE_DIS_BV_003
+        	
+        	group g_CSE_DIS_BV_004
+        	{
+				testcase TC_CSE_DIS_BV_004() runs on CseTester system CseSystem {
+					// Local variables
+					var MsgIn v_response;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var RequestPrimitive v_request;
+					var CseTester v_notifyHandler;
+					var integer v_ae2Index := -1;
+					const ResourceType c_containerResourceType := int3; 
+					
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred;
+					
+					v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex);
+					v_request := valueof(m_retrieveResourceDiscResTypeFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int2, int1));
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) -> value v_response {
+							tc_ac.stop;
+							if(not ischosen(v_response.primitive.responsePrimitive.primitiveContent.uRIList)){
+							  setverdict(fail, testcasename() & ": URI List Representation containing unstructured addresses not present");	
+							}
+							else
+							{
+						      setverdict(pass, testcasename() & ": URI List Representation containing unstructured addresses available");
+							}
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while retrieving resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, testcasename() & ": No answer while retrieving resource");
+						}
+					 }	
+    								
+					// Postamble
+					f_cse_postamble_deleteResources();
+					
+					// Tear down
+					f_cf01Down();
+				} // end TC_CSE_DIS_BV_004
+				
+        	} //end group g_CSE_DIS_BV_004
+        	
+			group g_CSE_DIS_BO_006
+			{
+					testcase TC_CSE_DIS_BO_006() runs on CseTester system CseSystem {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_resourceIndex := -1;
+						var RequestPrimitive v_request;
+						var CseTester v_notifyHandler;
+						var integer v_ae2Index := -1;
+						const ResourceType c_containerResourceType := int3; 
+					
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred;
+					
+						v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1));
+						mcaPort.send(m_request(v_request));
+						tc_ac.start;
+						alt {
+						
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int4004))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Resource not found");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while retrieving resource");
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, testcasename() & ": No answer while retrieving resource");
+							}
+						 }	
+    								
+						// Postamble
+						f_cse_postamble_deleteResources();
+					
+						// Tear down
+						f_cf01Down();
+					} // end TC_CSE_DIS_BO_006
+				
+			} //end group g_CSE_DIS_BO_006
+			
+			group g_CSE_DIS_BI_007
+			{
+					testcase TC_CSE_DIS_BI_007() runs on CseTester system CseSystem {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_resourceIndex := -1;
+						var RequestPrimitive v_request;
+						var CseTester v_notifyHandler;
+						var integer v_ae2Index := -1;
+						const ResourceType c_containerResourceType := int3; 
+					
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred;
+					    
+						v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex); 
+						v_request := valueof(m_retrieveResourceInvalidFormatOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex)));
+						mcaPort.send(m_request(v_request));
+						tc_ac.start;
+						alt {
+						
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int4102))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Contents Unacceptable");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while retrieving resource");
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, testcasename() & ": No answer while retrieving resource");
+							}
+						 }	
+    								
+						// Postamble
+						f_cse_postamble_deleteResources();
+					
+						// Tear down
+						f_cf01Down();
+					} // end TC_CSE_DIS_BI_007	
+			} //end group g_CSE_DIS_BI_007
+				
+        } //end group Group Discovery
 		
 		group Subscription_And_Notification {
 	
-- 
GitLab